ホームページ >データベース >mysql チュートリアル >MySQL の「ON DUPLICATE KEY UPDATE」句を効率的に使用するにはどうすればよいですか?
「ON DUPLICATE KEY UPDATE」の効率的な使用
データベース操作を実行するとき、重複キーのシナリオがよく発生します。このような場合、新しい行を挿入するか、同じキーを使用して既存の行を更新することができます。この記事では、重複キーを処理するための MySQL の "ON DUPLICATE KEY UPDATE" 句の使用について説明します。
問題
次の MySQL クエリを考えてみましょう:
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8)
フィールド ID には一意のインデックスがあり、ID 値が重複できないことを意味します。同じ ID を持つ行がデータベースにすでに存在する場合、新しい行を挿入する代わりにそれを更新したいとします。ただし、「ON DUPLICATE KEY UPDATE」の原因ですべてのフィールド値を再指定すると、非効率的かつ反復的になる可能性があります。
考えられる解決策
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)
この構文は、 「ON DUPLICATE KEY UPDATE」で指定された列
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=a, b=b, c=c, d=d, e=e, f=f, g=g;
最後に挿入されたものの取得ID
LAST_INSERT_ID() 関数を使用して、最後に挿入された行の ID を取得できます。この機能の使用方法は、使用しているバックエンド アプリによって異なる場合があります。たとえば、LuaSQL では、conn:getlastautoid() メソッドが値を取得します。
以上がMySQL の「ON DUPLICATE KEY UPDATE」句を効率的に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。