在MySQL中获取准确的重复行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在MySQL中获取准确的重复行相关的知识,希望对你有一定的参考价值。
我正在寻找mysql中完全重复的内容。有很多列,每行大约30-40列。似乎有一些重复的行,我想识别它们。有很多记录。
有没有办法让MySQL返回所有重复的行,每个列都相同,没有列出并创建列出每列的查询?
答案
我想确认一下
你不能。您只能通过唯一(或主要)键标识行。但如果你有,那就没有任何确切的重复。
但是 - 如果您真的不想列出所有列,则可以创建表的临时副本并添加AUTO_INCREMENT PRIMARY KEY。那么NATURAL JOIN
,GROUP BY
和COUNT
的组合将返回重复的行:
drop table if exists my_duplicates;
create table my_duplicates (c1 int, c2 int, c3 int);
insert into my_duplicates(c1, c2, c3)values
(1,1,1),
(1,2,3),
(4,5,6),
(1,2,3);
drop temporary table if exists tmp;
create temporary table tmp as select * from my_duplicates;
alter table tmp add column row_number int auto_increment primary key;
select tmp.*
from tmp
natural join my_duplicates
group by tmp.row_number
having count(*) > 1
结果:
c1 | c2 | c3 | row_number
---|----|----|-----------
1 | 2 | 3 | 2
1 | 2 | 3 | 4
但是:ぁzxswい
Update
如果您有主键列,则可以执行相反的操作:创建表的副本并将主键列放在副本表中。然后你有与上面相同的情况 - 你只需要在查询中切换表。
http://rextester.com/COQA38406
以上是关于在MySQL中获取准确的重复行的主要内容,如果未能解决你的问题,请参考以下文章