0

MySQLUPDATE语句不适用于带括号的列表。例如,以下是语法错误:

UPDATE zork SET (A,B) = ('foo','bar') WHERE C = 'baz';

但是,INSERTandREPLACE语句确实允许带括号的列表。有没有办法将UPDATE语句中的列名和值列表组合在一起?

4

2 回答 2

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')
    

    或者

    UPDATE tableX SET (a,b) = ('foo','bar')
    

至于为什么,我想只有 MySQL 开发人员才能回答。也许您可以提交错误/功能建议。

对于您的更新,我认为没有其他选择:

UPDATE tableX 
SET a = 'foo',
    b = 'bar'
WHERE C = 'baz';
于 2013-06-16T07:07:09.760 回答
0

如果您有主键集并且不需要更新该键,则可以使用替换命令:

REPLACE INTO zork VALUES ('foo','bar','baz')

如果你真的需要使用 UPDATE 语法,那你就不走运了。

于 2013-06-16T06:42:52.137 回答