2

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

rating (現在の評価) num_rates (これまでに送信された評価の数)

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

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

したがって、基本的に、uniqueCol を含む行が DB に存在しない場合があるため、存在する場合は上記のステートメントを実行し、存在しない場合は次のようなことを行うにはどうすればよいですか。

INSERT INTO `mytable`
   SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
4

1 に答える 1

4

INSERT ... ON DUPLICATE KEY UPDATEをご覧ください。

次のようになります。

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

于 2010-01-10T11:13:27.103 に答える