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 ... ANDUPDATE ... 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 コマンドを使用できます。

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

本当に UPDATE 構文を使用する必要がある場合は、運が悪いです。

于 2013-06-16T06:42:52.137 に答える