MySql在重复键上添加条件状态,如果不是重复键

时间:2014-09-09 11:06:44

标签: mysql database

有没有办法添加条件,如"如果不是重复键"?

MySql_Connection.query("
    INSERT INTO `my_database`.my_table (`word`) VALUES ("word_to_insert") 
    ON DUPLICATE KEY UPDATE `hits` = `hits` + 1
    // ON **NOT** DUPLICATE KEY UPDATE `hits` = `hits` + 2;
");

以下对我的案例来说不是一个好的解决方案

MySql_Connection.query("
    INSERT INTO `my_database`.my_table (`word`) VALUES ("word_to_insert") 
    UPDATE `hits` = `hits` + 2
    ON DUPLICATE KEY UPDATE `hits` = `hits` + 1;
");

因为它默认会增加2

2 个答案:

答案 0 :(得分:2)

如果重复则尝试减少它以避免它:

INSERT INTO `my_database`.my_table (`word`) VALUES ("word_to_insert") 
    UPDATE `hits` = `hits` + 2
    ON DUPLICATE KEY UPDATE `hits` = `hits` - 1;

如果没有重复:+2
如果重复+2-1 = +1

答案 1 :(得分:2)

我猜这个词是主键。

如果你这样做,你会在添加一个单词时获得2次点击,否则为点击添加1次:

INSERT INTO mytable(word, hits) VALUES('word_to_insert', 2)
ON DUPLICATE KEY UPDATE hits=hits+1