mysql建立聯合索引,mysql建立唯一鍵,mysql如何解决重複記錄聯合索引

中冬廿九 2022-01-08 05:46:07 阅读数:869

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,在建立索引的同時删除了重複數據,相當有用。

版权声明:本文为[中冬廿九]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201080546068144.html