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

Sql 我可以在SELECT查询中使用不同的值更新多个记录吗?,sql,Sql,例如,我有带field1和field2的table1,我想做如下事情: UPDATE table1 SET field1, field2 = (SELECT field1, field 2 FROM tableXYZ) WHERE field 3 = 'foobar' 或者我必须执行多个集合,多次运行同一个SELECT查询吗?假设您使用的任何数据库都支持它,那么您可以加入表。因此: Update table1 set field1 = tbx.field1, field2 = tbx.fie

例如,我有带field1和field2的table1,我想做如下事情:

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

或者我必须执行多个集合,多次运行同一个SELECT查询吗?

假设您使用的任何数据库都支持它,那么您可以加入表。因此:

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

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

UPDATE table1
  SET (column1, column2) = (SELECT col1, col2 
                            FROM tableXYZ
                            WHERE ...)
WHERE column3 = 'foobar';
以上是标准SQL,但并非所有DBMS都支持


请注意,您必须在子select中使用WHERE子句,以确保select仅返回一行,您通常会将该行作为一个相关子查询。

在询问之前,您可能应该尝试这样做。您使用的是哪种DBMS?博士后?神谕DB2?火鸟?你似乎在问题本身中有正确的答案。你甚至试过执行它吗?您甚至可以在Select字段1中添加where条件,从tableXYZ中添加field2,其中something='something',因此我添加了'您正在使用的任何数据库都支持它'