我需要知道是否可以在UPDATE语句中执行此操作:
UPDATE users SET ('field1', 'field2', 'field3') VALUES ('value1', 'value2', 'value3');
或类似的语法。我正在使用SQLite。
笔记:
没有人理解我,我只想知道是否可以将单独的字段设置为单独的值。就这样。
有一种(标准SQL)语法与您提出的语法类似,但据我所知,只有Postgres才实现了它:
UPDATE users SET (field1, field2, field3) = ('value1', 'value2', 'value3') WHERE some_condition ;
经过测试(针对异教徒): SQL-Fiddle
这也适用于Postgres:
UPDATE users AS u SET (field1, field2, field3) = (f1, f2, f3) FROM ( VALUES ('value1', 'value2', 'value3') ) AS x (f1, f2, f3) WHERE condition ;
这适用于Postgres和SQL-Server:
UPDATE users SET field1 = f1, field2 = f2, field3 = f3 FROM ( VALUES ('value1', 'value2', 'value3') ) AS x (f1, f2, f3) WHERE condition ;
正如@JackDouglas所评论的,这在Oracle中有效:
UPDATE users SET (field1, field2, field3) = ( SELECT 'value1', 'value2', 'value3' FROM dual ) WHERE condition ;