MySQLそれが存在するかどうかに応じて、新しいレコードを挿入するか、フィールドを更新する方法は?

StackOverflow https://stackoverflow.com/questions/2036794

質問

DBテーブルに次の2つのフィールドを保持する評価システムを実装しようとしています。

評価(現在の評価)num_rates(これまでに提出された格付けの数)

UPDATE `mytable`
   SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
 WHERE uniqueCol='$uniqueCol'

変数は私のPHPコードからのものです。

したがって、基本的には、ユニークのある行がDBに存在しない場合があります。したがって、上記のステートメントを存在する場合、そしてそれがそうでない場合は次のようなことをするにはどうすればよいですか。

INSERT INTO `mytable`
   SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
役に立ちましたか?

解決

見て 挿入...重複キーアップデートに.

それはそのように見えるはずです:

INSERT INTO mytable (rating, num_rates, uniqueCol)
VALUES ($theRating, 1, $uniqueCol)
ON DUPLICATE KEY UPDATE
  rating=((rating*num_rates)+$theRating)/num_rates,
  num_rates=num_rates+1;

必ず持ってください UNIQUE index また PRIMARY KEY あなたに uniqueCol.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top