【发布时间】:2019-04-24 02:06:26
【问题描述】:
我的目标是从一个表中获取数据并在另一个表中更新它。我正在执行显式连接并运行下面的查询。
UPDATE [Users] set
name = (
SELECT concat(Column1,' ',Column2)
from [Table2]
inner join [Users] on Name = Column3
where Name like 'ABC'
)
运行上述查询时出现以下错误:
消息 512,第 16 级,状态 1,第 45 行
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
请注意 Column1、Column2、Column3 是表 2 独有的,因此我没有添加限定符。
【问题讨论】:
-
你想如何解决这个问题?您的匹配条件返回多条记录,因此您需要改进匹配条件以将其减少到一条记录。
-
我想更新列中与表 2 中的相应值指定的条件匹配的所有行。返回 1 值如何工作?
-
您目前没有考虑更新表的哪一行要更新的条件。提供的答案类型解决了这个问题。但是,如果您的查询返回多行,这意味着
Name/Column3不是唯一的。确实需要提供一个 MVCE (stackoverflow.com/help/mcve) 示例。
标签: sql sql-server