2

我正在尝试实现一个评级系统,在我的数据库表中保留以下两个字段:

rating(当前评分) num_rates(到目前为止提交的评分数)

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

变量来自我的 PHP 代码。

因此,基本上有时数据库中不存在具有 uniqueCol 的行,所以如果存在,我该如何执行上述语句,如果不存在,则执行以下操作:

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 KEYuniqueCol

于 2010-01-10T11:13:27.103 回答