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) 

上面的查询失败。在此先感谢

+0

我得到以下错误 – Qinnovator

+0

它是否失败并出现错误? –

+0

@Qinnovator:请**通过**编辑**更新**您的原始问题与错误消息** - 不要在评论中张贴更长的文本!真的很难读.... –

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条款,并给它一个有意义表的别名(不只是ab) - 使用该表的别名在UPDATE声明
  • 使用INNER JOIN(而不是“嵌入” JOIN用逗号分隔)拼写出你的JOIN意图和你的连接条件
+0

感谢您通知我要使用的别名 – Qinnovator