首页 > 解决方案 > 子查询用作表达式时,子查询返回的值不允许超过 1 个

问题描述

我的目标是从一个表中获取数据并在另一个表中更新它。我正在执行显式连接并运行下面的查询。

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 独有的,因此我没有添加限定符。

标签: sqlsql-server

解决方案


你可以尝试使用UPDATE... JOIN

UPDATE  t1 set
  name = concat(Column1,' ',Column2) 
FROM [Users] t1 JOIN [Table2] on Name = Column3
where Name like 'ABC' 

推荐阅读