sql server更新查询失败

sql server更新查询失败,sql,sql-server,tsql,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) 上

我有一个
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)

上述查询失败。提前感谢

我假设您的查询失败,因为您试图将结果集(由SELECT返回)分配给单个列值。您需要使用
内部联接
来指定ItemMaster中的每一行如何对应DailySales表中的一行,然后才能为相应的条目分配价格值:

update  a
set     Price = b.Price
from    DailySales a
        join ItemMaster b on a.ItemName = b.ItemName
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
    语句中使用该表别名
  • 使用
    内部联接
    (而不是通过一个表接一个表,用逗号分隔来“嵌入”联接)来阐明联接意图和联接条件

@Qinnovator:请通过编辑错误消息来更新您的原始问题-不要在评论中发布更长的文本!很难阅读…此链接很有用同意marc_的观点,即使用
a
b
并不是特别有用,但我认为这可能有助于OP更好地理解它。感谢您通知我要使用的别名