3

テーブルに存在する場合と存在しない場合があるレコードを更新したいと考えています。データベースに存在しない場合は、挿入されます。

選択を防ぐために、UPDATE最初にステートメントを使用し、そうでないかどうかを確認affected_rows > 0してから、このレコードをテーブルに挿入しています。

これを行うためのより良い方法があるかどうか疑問に思っていましたか?

4

2 に答える 2

5

INSERT ... ON DUPLICATE KEY UPDATE次の構文を使用できます。

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

http://dev.mysql.com/doc/refman/4.1/en/insert-on-duplicate.html


REPLACEこれと(フェマレフの答え)の違いは、キーが重複している場合は古い行REPLACE削除してから新しい行を挿入し、既存の行を更新することです。

于 2010-09-26T00:02:16.870 に答える
4

Replaceの代わりに使用しInsertます。

http://dev.mysql.com/doc/refman/5.0/en/replace.html

于 2010-09-26T00:02:09.780 に答える