我正在构建评分系统,如果name
字段 已经包含我要插入的name
,我想插入一个新行,并且如果确实存在,我想将count
字段增加1
例如,如果我有一行name
'Tom',我尝试使用name
'Tom插入另一行,那么我想+1
为该字段<{1}}已存在的行。
如果不存在count
'Tom'的行,我想插入一个新行并将name
设置为1。
我知道我可以使用大约3个SQL语句和一些count
语句执行此操作,但这会在执行2/3 sql命令时减慢脚本速度。
有什么想法吗? 谢谢!
答案 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