mysql建立联合索引,mysql建立唯一键,mysql如何解决重复记录联合索引

在项目中,常常要用到联合唯一
 
在一些配置表中,一些列的组合成为一条记录。
 
比如,在游戏中,游戏的分区和用户id会形成一条记录。(比如,一个qq用户可以在艾欧尼亚、德玛西亚创建两个账号)

  • 添加联合唯一索引
alter table lol_region_user_table add unique index(user_id,game_region);
-- 解释版
alter table 表名 add unique index(字段1,字段2);

但是有一种情况是表中已经有n个重复的记录,这时候我们才想起来要添加唯一索引,再执行上面的操作时,数据库会返回1062的添加失败信息,告诉你已经有重复的记录了,建立索引失败。

  • 我们可以通过这条sql去查询目前重复的记录:
select user_id,game_region,count(*) as count from lol_region_user_table group by user_id,game_region having count>1;
-- 解释版:
select 字段1,字段2,count(*) as count from 表名 group by 字段1,字段2 having count>1;
  • 我们可以用下面的操作删除重复条目并创建:
alter ignore table lol_region_user_table add unique index(user_id,game_region);
-- 解释版
alter ignore table 表名 add unique index(字段1,字段2);

它会删除重复的记录(别怕,会保留一条),然后建立唯一索引,高效而且人性化。

尤其是添加了ignore的这条sql,在建立索引的同时删除了重复数据,相当有用。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了迹奇有没

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值