MySQLそれが存在するかどうかに応じて、新しいレコードを挿入するか、フィールドを更新する方法は?
-
19-09-2019 - |
質問
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
.
所属していません StackOverflow