我有一个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)
以上查询失败。提前致谢
答案 0 :(得分:3)
你没有告诉我们很多如何它失败(错误信息或其他任何内容) - 但我相信这句话应该有效:
UPDATE ds
SET ds.Price = im.Price
FROM dbo.DailySales ds
INNER JOIN dbo.Itemmaster im ON im.itemname = ds.itemname
要记住的要点:
FROM
子句,并为其指定有意义的表别名(不只是a
或b
) - 使用该表别名在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