
mysql去除多列组合重复(并添加组合唯一索引)
索引名称的规范:建议为索引名称起个有意义的名字,例如 数据一致性:在添加唯一索引前,确保数据的一致性。 性能优化:确保索引的选择合理,避免过大的索引。
发布日期:2021-05-08 04:53:51
浏览次数:12
分类:精选文章
本文共 1299 字,大约阅读时间需要 4 分钟。
数据表重复记录处理及唯一索引添加指南
数据表重复记录处理
在实际项目中,数据表中可能会出现重复记录。通常,这种重复是多个字段的值组合起来相同,而非单个字段的重复。例如,col1
、col2
和 col3
三个字段的值组合相同。
重复数据的检测
为了检测重复记录,可以使用以下 SQL 语句:
SELECT col1, col2, col3 FROM table_name GROUP BY col1, col2, col3 HAVING COUNT(*) > 1
重复记录的筛选
接下来,可以通过将重复记录连接起来筛选出重复项:
SELECT t1.* FROM table_name t1 JOIN ( SELECT col1, col2, col3 FROM table_name GROUP BY col1, col2, col3 HAVING COUNT(*) > 1) t2 ON t1.col1 = t2.col1 AND t1.col2 = t2.col2 AND t1.col3 = t2.col3
重复记录的删除
为了删除重复记录,可以先获取需要删除的记录 ID:
SELECT t1.id FROM table_name t1 JOIN ( SELECT col1, col2, col3 FROM table_name GROUP BY col1, col2, col3 HAVING COUNT(*) > 1) t2 ON t1.col1 = t2.col1 AND t1.col2 = t2.col2 AND t1.col3 = t2.col3 GROUP BY col1, col2, col3
然后,使用 DELETE
语句删除这些记录。由于 MySQL 不允许在一个 DELETE
语句中同时使用子查询,可以分成两步执行:
DELETE FROM table_name WHERE id IN ( SELECT t1.id FROM table_name t1 JOIN ( SELECT col1, col2, col3 FROM table_name GROUP BY col1, col2, col3 HAVING COUNT(*) > 1 ) t2 ON t1.col1 = t2.col1 AND t1.col2 = t2.col2 AND t1.col3 = t2.col3 GROUP BY col1, col2, col3);
唯一索引的添加
添加唯一索引后,可以避免未来的重复记录问题:
ALTER TABLE table_name ADD UNIQUE "uk_index" (col1, col2, col3)
注意事项
uk_index
。通过以上步骤,可以有效地清理数据表中的重复记录,并为数据表添加唯一索引,确保数据的唯一性和完整性。
发表评论
最新留言
不错!
[***.144.177.141]2025年03月22日 16时23分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
事务到底是隔离的还是不隔离的?
2019-03-04
@Import注解---导入资源
2019-03-04
解决ubuntu在虚拟机(VMware)环境下不能联网的问题
2019-03-04
二分查找与插入排序的结合使用
2019-03-04
892 三维形体的表面积(分析)
2019-03-04
40. 组合总和 II(dfs、set去重)
2019-03-04
16 最接近的三数之和(排序、双指针)
2019-03-04
279 完全平方数(bfs)
2019-03-04
410 分割数组的最大值(二分查找、动态规划)
2019-03-04
875 爱吃香蕉的珂珂(二分查找)
2019-03-04
450 删除二叉搜索树中的节点(递归删除节点)
2019-03-04
桌面图标的自动排列图标
2019-03-04
第十一届蓝桥杯python组第二场省赛-数字三角形
2019-03-04
数字三角形的无返回值的深度优先搜索解法
2019-03-04
完全背包问题的简化思路
2019-03-04
Jquery添加元素
2019-03-04
Jquery使用需要下载的文件
2019-03-04
Spring中如何传递参数的问题
2019-03-04
BST中某一层的所有节点(宽度优先搜索)
2019-03-04
广度优先搜索
2019-03-04