MySQL插入重复键

时间:2010-01-31 11:52:54

标签: php mysql insert

我正在构建评分系统,如果name字段 已经包含我要插入的name,我想插入一个新行,并且如果确实存在,我想将count字段增加1

例如,如果我有一行name'Tom',我尝试使用name'Tom插入另一行,那么我想+1为该字段<{1}}已存在的行。

如果不存在count'Tom'的行,我想插入一个新行并将name设置为1。

我知道我可以使用大约3个SQL语句和一些count语句执行此操作,但这会在执行2/3 sql命令时减慢脚本速度。

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:12)

请参阅INSERT ... ON DUPLICATE KEY UPDATE

如果指定ON DUPLICATE KEY UPDATE,并且插入的行将导致UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行的UPDATE。

e.g。

INSERT INTO table (name,counter) VALUES ('Bob', 1)
  ON DUPLICATE KEY UPDATE counter=counter+1