on duplicate key update简单使用

Posted zjfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了on duplicate key update简单使用相关的知识,希望对你有一定的参考价值。

1。最近在做项目的时候,遇到这样的一个问题,就是我每做完一件事情,都要更新一下统计表,然而要更新统计表,就要根据主键去统计表里面去查询是否已经有这样的一条记录,如果有那么就更新,如果没有那么就插入一条记录,开始我就是这么干的,结果被老大给否决了,他说可以用on duplicate key update去做。下面就实际操作一下吧:

表结构:

+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| player_id | int(11) | NO   | PRI | NULL    |       |
| count     | int(11) | YES  |     | NULL    |       |
+-----------+---------+------+-----+---------+-------+
2 rows in set (0.01 sec)

老做法是写三条sql语句:

select * from player_count where player_id = 1;//查询统计表中是否有记录

insert into player_count(player_id,count) value(1,1);//没有记录就执行insert 操作

update player_count set count = count+1 where player_id = 1;//有记录就执行update操作

这种写法比较麻烦

用on duplicate key update 的做法如下:

insert into player_count(player_id,count) value(1,1) on duplicate key update count=count+1;

这样每次不管插入还是更新都调用这句语句就能达到我们要的效果,省了不少的判断。

如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。

以上是关于on duplicate key update简单使用的主要内容,如果未能解决你的问题,请参考以下文章

INSERT ... ON DUPLICATE KEY UPDATE Syntax

ON DUPLICATE KEY UPDATE

on duplicate key update 怎么确定返回值

MySql避免重复插入记录方法(ignore,Replace,on duplicate key update,not exist)

sql UPDATE ON DUPLICATE KEY造成MYSQL死锁现场

ON DUPLICATE KEY UPDATE添加或更新