SQL更新查询和'子查询返回多个值'

Kim*_*nce 3 sql t-sql sql-server sql-server-2008

我正在使用SQL Server 2008 R2.有一个主表(表A),并尝试使用临时表中的值更新它(表B).

SQL Server错误输出,说子查询返回了多个值,但是由于子查询返回的值是表B的主键,因此我看不出这是怎么回事.

这是查询:

UPDATE TableA  
   SET TableA.field = (SELECT TableB.field  
                         FROM TableA 
                   INNER JOIN TableB ON TableA.key = TableB.key) 
Run Code Online (Sandbox Code Playgroud)

像往常一样,任何帮助都非常感谢!

Ste*_*ass 7

您的子查询根本不相关.子查询中的标识符"TableA.key"引用子查询的FROM子句中的TableA,而不是更新的目标表(也发生在TableA中).您不希望使用两表连接的结果集更新TableA.field.你只想要这个:

UPDATE TableA  
   SET TableA.field = (SELECT TableB.field  
                       FROM TableB
                       WHERE TableA.key = TableB.key)
Run Code Online (Sandbox Code Playgroud)