我正在尝试实施一个评级系统,我在db表中保留以下两个字段:
评级(当前评级) num_rates(到目前为止提交的评分数)
UPDATE `mytable`
SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
WHERE uniqueCol='$uniqueCol'
变量来自我的PHP代码。
所以,基本上有时候DB中不存在带有uniqueCol的行,所以如果存在,我怎么能做上面的语句呢?如果不存在,那么这样做是这样的:
INSERT INTO `mytable`
SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
答案 0 :(得分: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
。