我可以在SELECT查询中使用不同的值更新多个记录吗?

时间:2017-01-18 19:54:28

标签: sql

例如,我table1 field1field2,并希望执行以下操作:

UPDATE table1
SET field1, field2 = (SELECT field1, field 2 FROM tableXYZ)
WHERE field 3 = 'foobar' 

或者我必须做多次SET,多次运行相同的SELECT查询?

2 个答案:

答案 0 :(得分:0)

假设您使用的数据库支持它,您可以加入表。 SO:

Update table1
set field1 = tbx.field1,
field2 = tbx.field2
from table1 join tablexyz on --some key value join

答案 1 :(得分:0)

您可以通过将左侧的列放在括号之间来执行元组赋值。

UPDATE table1
  SET (column1, column2) = (SELECT col1, col2 
                            FROM tableXYZ
                            WHERE ...)
WHERE column3 = 'foobar';

以上是标准SQL,但并非所有DBMS都支持。

请注意, 要在子选项中使用WHERE子句,以确保select只返回单个行(通常会与共同相关的子查询)。