ホームページ >データベース >mysql チュートリアル >MySQL で INSERT ON DUPLICATE KEY UPDATE 後に影響を受ける行の ID を取得するにはどうすればよいですか?

MySQL で INSERT ON DUPLICATE KEY UPDATE 後に影響を受ける行の ID を取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-04 18:19:15921ブラウズ

How Can I Retrieve the ID of an Affected Row After an INSERT ON DUPLICATE KEY UPDATE in MySQL?

MySQL での ON DUPLICATE KEY 更新の ID の取得

INSERT ON DUPLICATE KEY クエリの実行時、影響を受ける行の ID を取得する挑戦的になる可能性があります。 LAST_INSERT_ID() は通常、新しく挿入された行の ID のみを返すため、従来は別のクエリを実行する必要がありました。

ただし、LAST_INSERT_ID(expr) 関数を利用する回避策があります。この関数に式を渡すことで、更新された行に対してもその出力を意味のあるものにすることができます。

解決策

挿入または更新された行の ID を取得するには、次を使用します。単一のクエリ:

  1. テーブルに AUTO_INCREMENT カラムがあることを確認します。 id.
  2. 次のクエリ構文を使用します:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE>

UPDATE 句で id カラムを LAST_INSERT_ID(id) として設定すると、MySQL は新しい AUTO_INCREMENT 値を挿入された行と更新された行の両方の id 列。

これにより、ほとんどの行の ID を取得できます。 LAST_INSERT_ID() を呼び出すだけで、最近の操作 (挿入または更新) を実行できます。これは、INSERT ステートメントと UPDATE ステートメントの両方の機能を 1 つのクエリに効果的に組み合わせます。

以上がMySQL で INSERT ON DUPLICATE KEY UPDATE 後に影響を受ける行の ID を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。