MySQL的如何插入新记录或更新取决于它是否存在一个字段?
-
19-09-2019 - |
题
我想实现一个评级系统,我记住以下两个领域在我的数据库表:
等级(当前等级) 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 KEY
或uniqueCol
。
不隶属于 StackOverflow