1. ホーム
  2. mysql

[解決済み] キーが重複している場合の更新は、挿入と同じです。

2022-04-20 17:23:44

質問

いろいろ検索してみたのですが、可能かどうかわかりませんでした。

私はこのMySQLクエリを持っています。

INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)

フィールドidは"unique index"を持っているので、2つ存在することはできません。もし、同じidがすでにデータベースに存在する場合、それを更新したいと思います。しかし、これらのフィールドをすべてもう一度指定する必要があるのでしょうか。

INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) 
ON DUPLICATE KEY UPDATE a=2,b=3,c=4,d=5,e=6,f=7,g=8

または

INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) 
ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g)

挿入時に既に全て指定しているのですが...。

おまけ:IDを取得するワークアラウンドを使いたい!

id=LAST_INSERT_ID(id)

最も効率的な方法は何か、誰か教えてくれないかな。

どのように解決するのですか?

他に方法はありません。すべてを2回指定しなければなりません。1回目は挿入の場合、2回目は更新の場合です。