当子查询用作表达式时,子查询返回的值超过1个

时间:2019-04-24 02:06:26

标签: sql sql-server

我的目的是从一个表中获取数据并在另一个表中对其进行更新。我正在进行显式联接并在下面运行查询。

UPDATE [Users] set
  name = (
    SELECT concat(Column1,' ',Column2) 
    from [Table2] 
    inner join [Users] on Name = Column3
    where Name like 'ABC'
  )

运行上述查询时出现以下错误:

  

Msg 512,第16级,状态1,第45行
  子查询返回的值超过1。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。

请注意Column1,Column2,Column3对于表2而言是唯一的,因此我没有添加限定符。

1 个答案:

答案 0 :(得分:1)

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

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