INSERT ON DUPLICATE KEY UPDATE与插入的不同值

时间:2015-06-28 15:45:23

标签: mysql

我想做这样的事情(更新的值应该与插入的值不同):

"INSERT INTO notification_chat_counts (uid,group_id,count)
                            VALUES
                                    (",$uid,",",$groupId,",1)
                            ON DUPLICATE KEY UPDATE
                                    (count = count +1)"

1 个答案:

答案 0 :(得分:1)

当然有可能。甚至MySQL manual都有插入不同值的示例,即更新的值:

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

对于您的示例,正​​确的查询语法为:

$query = "INSERT INTO notification_chat_counts (uid,group_id,count)
          VALUES (",$uid,",",$groupId,",1)
          ON DUPLICATE KEY UPDATE count=count+1"

但是,要使此语句起作用,必须为此表定义UNIQUE类型索引,以便MySQL可以决定表中是否已存在此行。

还要记住,在这样的SQL查询中插入值是危险的,不推荐使用。你应该使用准备好的陈述。