admin

MySQL如何根据其是否存在来插入新记录或更新字段?

sql

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

评分(当前评分)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

阅读 212

收藏
2021-06-07

共1个答案

admin

看一下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 indexPRIMARY KEY你的uniqueCol

2021-06-07