on duplicate key update简单使用

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

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

这就需要三条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 ')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值