SQL服务器更新查询失败
问题描述:
我有一个Itemmaster
表,并希望将itemmaster
表中的价格更新为DailySales表。SQL服务器更新查询失败
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)
上面的查询失败。在此先感谢
答
update a
set Price = b.Price
from DailySales a
join ItemMaster b on a.ItemName = b.ItemName
+0
同意marc_s使用'a'和'b'不是特别有用,但我认为这可能有助于OP更好地理解它。 –
答
我假设您的查询失败,因为您试图将结果集(由SELECT返回)分配给单个列值。您需要使用INNER JOIN
指定如何从每个ItemMaster单行对应于从DailySales表中的一行,那么你就能够分配的相应条目的价格值:
UPDATE DailySales
SET ds.Price = im.Price
FROM DailySales ds
INNER JOIN ItemMaster im ON ds.ItemName = im.ItemName
答
你没有告诉我们很多有关如何失败(错误信息或任何东西) - 但我相信这种说法应该工作:
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意图和你的连接条件
+0
感谢您通知我要使用的别名 – Qinnovator
我得到以下错误 – Qinnovator
它是否失败并出现错误? –
@Qinnovator:请**通过**编辑**更新**您的原始问题与错误消息** - 不要在评论中张贴更长的文本!真的很难读.... –