【问题标题】:MySQL How to insert new record or update a field depending on whether it exists?MySQL如何根据是否存在插入新记录或更新字段?
【发布时间】:2010-01-10 11:10:25
【问题描述】:

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

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

【问题讨论】:

    标签: mysql sql sql-update sql-insert


    【解决方案1】:

    看看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;
    

    确保您的uniqueCol 上有UNIQUE indexPRIMARY KEY

    【讨论】:

      猜你喜欢
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      相关资源
      最近更新 更多