如果在第二行进行唯一检查,请检查一行是否有重复

时间:2014-06-14 16:44:38

标签: php mysql sql

我正在尝试为我的网站创建一个关键字系统,但我遇到了一个障碍。

数据库表有五行DATE | USERID | AMOUNT |关键词| ID

在数据库中插入行时,需要检查该用户ID是否已存在该关键字,如果是,则增加数量,如果没有,则插入默认值为1.

到目前为止,我有:

  $stmt= $conn->prepare("INSERT INTO `keywords` (keyword, userId, id) VALUES(?,?,?) ON DUPLICATE KEY UPDATE `amount` = `amount` + 1");

如何检查userid值是否重复并增加或根据结果插入关键字?

1 个答案:

答案 0 :(得分:1)

您的查询是:

INSERT INTO `keywords`(keyword, userId, id)
    VALUES(?,?,?)
    ON DUPLICATE KEY UPDATE `amount` = `amount` + 1;

这看起来像你想做的事情,可能只有一个小小的变化:

INSERT INTO `keywords`(keyword, userId, id)
    VALUES(?,?,?)
    ON DUPLICATE KEY UPDATE `amount` = coalesce(`amount`, 0) + 1;

(如果amount的默认值不是NULL,则不需要这样做。)

您需要的另一件事是约束,即keyword是唯一的。因此,添加一个唯一的索引:

create unique index idx_keywords_keyword on keywords(keyword)