您的位置:首页 > 理论基础 > 计算机网络

on duplicate key update简单使用

2015-09-17 18:53 295 查看
今天做项目的时候遇到了一个这种情况,就是可能要对某个数据表频繁的更新,如果更新的条目在数据表中就更新,如果不再数据表中就插入这条记录

那么问题来了,传统的做法都是首用主键去查询数据表,如果数据表中有这条记录,则更新这条记录,如果没有,则讲这条记录插入到表中,

这就需要三条sql语句来完成:

例如一下数据表:

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

| skill_id  | int(11) | NO   |
PRI | NULL    |       |

| skill_lvl | int(11) | NO   |
PRI | NULL    |       |
| count     |
int(11) | YES  |     |
NULL    |       |
+-----------+---------+------+-----+---------+-------+

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

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

3.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, 1, 1) on duplicate key update  count=count+1;

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

另外,如果想用多个表项值来做索引,如通过player_id和skill_id一起来做索引,确定一条记录,可以使用联合索引UNIQUE KEY 'SQL_ID' (' player_id ', ' skill_id ')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据 sql 网络