我想实现一个评级系统,我记住以下两个领域在我的数据库表:

等级(当前等级) 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
有帮助吗?

解决方案

看一看 INSERT ... ON重复键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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top