当我们在做关键词搜索的时候,需要把关键词插入到搜索表中,并做统计。正常的思路:要更新统计表,就要根据主键去统计表里面去查询是否已经有这样的一条记录,如果有那么就更新,如果没有那么就插入一条记录。

表结构:

+———–+———+——+—–+———+——-+
| Field     | Type    | Null | Key | Default | Extra |
+———–+———+——+—–+———+——-+
| player_id | int(11) | NO   | PRI | NULL         |
| count     | int(11) | YES     | NULL         |
+———–+———+——+—–+———+——-+

老做法是写三条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;

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

Leave a comment