MySQL UPDATE
语句不适用于括号列表。例如,以下是语法错误:
UPDATE zork SET (A,B) = ('foo','bar') WHERE C = 'baz';
但是,INSERT
和REPLACE
语句允许括号列表。有没有办法将UPDATE
语句中的列名和值列表组合在一起?
答案 0 :(得分:1)
行构造函数语法在某些地方有效,而在其他地方无效。
工作与=
,<
,>
,<=
,>=
,{{1 }}:
<>
或
WHERE (a,b) = ('foo','bar')
或
WHERE (a,b) >= ('foo','bar')
但无效与WHERE (a,b,c) <> ('foo','bar',7)
和其他结构一样,如BETWEEN ... AND
:
UPDATE ... SET
或
WHERE (a,b) BETWEEN ('foo','bar') AND ('foo','bar')
为什么,我认为只有MySQL开发人员可以回答。也许您可以提交错误/功能建议。
对于您的更新,我认为除了以下之外还有其他选择:
UPDATE tableX SET (a,b) = ('foo','bar')
答案 1 :(得分:0)
如果您设置了主键并且不需要更新该键,则可以使用replace命令:
REPLACE INTO zork VALUES ('foo','bar','baz')
如果你真的需要使用UPDATE语法,那你就不走运了。