sql server更新查询失败

时间:2011-11-26 13:59:26

标签: sql sql-server tsql

我有一个Itemmaster表,想要将itemmaster表中的价格更新为DailySales表。

ItemMaster (ItemName, Price)

DailySales (Date, ItemName, Price)

我的查询是:

update DailySales a 
set Price = (select b.price 
             from DailySales a, Itemmaster b where a.itemname = b.itemname)

以上查询失败。提前致谢

3 个答案:

答案 0 :(得分:3)

你没有告诉我们很多如何它失败(错误信息或其他任何内容) - 但我相信这句话应该有效:

UPDATE ds
SET ds.Price = im.Price
FROM dbo.DailySales ds
INNER JOIN dbo.Itemmaster im ON im.itemname = ds.itemname

要记住的要点:

  • 将您要更新的表名放入FROM子句,并为其指定有意义的表别名(不只是ab) - 使用该表别名在UPDATE语句
  • 使用INNER JOIN(而不是“嵌入式”JOIN,只需用表格后面的表格,以逗号分隔)来拼出你的JOIN意图和你的加入条件

答案 1 :(得分:1)

我假设您的查询失败,因为您尝试将结果集(由SELECT返回)分配给单个列值。您需要使用INNER JOIN来指定ItemMaster中的每一行如何与DailySales表中的一行对应,然后您就可以为相应的条目指定Price值:

UPDATE DailySales
  SET ds.Price = im.Price
FROM DailySales ds
INNER JOIN ItemMaster im ON ds.ItemName = im.ItemName

答案 2 :(得分:0)

update  a
set     Price = b.Price
from    DailySales a
        join ItemMaster b on a.ItemName = b.ItemName