1

複数の行を同時に追加/更新するクエリを作成しようとしています。秘密鍵を除くすべての値を更新することで、重複するキーを適切に処理できるようにしています。a.id

INSERT INTO products a (a.id, a.price, a.condition, a.link, a.price_updated) 
VALUES ('t1', 11, 'used', 'adasd', 100), ('t2', 11, 'used', 'adasd', 100) 
ON DUPLICATE KEY UPDATE VALUES (a.price, a.condition, a.link, a.price_updated) 

上記のクエリは、の近くに正しい構文エラーを表示しますがa (a.id、何が間違っている可能性がありますか?

何か案は?

4

2 に答える 2

2

私はこれがあなたが探しているものだと思います:

INSERT INTO products (id, price, cond, link, price_updated) 
VALUES ('t1', 11, 'used', 'adasd', 100), 
   ('t1', 11, 'used', 'adasd', 2100) 
ON DUPLICATE KEY UPDATE 
   price = VALUES(price), 
   cond = VALUES(cond), 
   link = VALUES(link), 
   price_updated = VALUES(price_updated)

SQLフィドルデモ

これにもテーブルエイリアスを使用できるとは思いませんが、間違っている可能性があります。

ところで-私は簡単にするために条件フィールドにcondを使用しました-フィールド名に置き換えます(予約語だと思うので、条件付きのバックティックが必要になる場合があります)。

于 2013-03-02T23:53:51.497 に答える
1

MysqlのINSERTステートメントでは挿入されたテーブルのエイリアスを作成できないため、構文エラーが発生します。と言う必要がありますINSERT INTO products (id, ...)

于 2013-03-02T23:53:10.977 に答える