在mysql中成对查找重复项

时间:2018-05-29 11:10:23

标签: mysql

我想知道如何在两个列合并的表中找到重复值。

假设我的表格中的字段为<ion-view> <ion-content> <ion-list ng-controller="MCtrl"> <ion-item ng-repeat="e in events"> <!-- IF ADDS --> <div ng-if="counterPub($index) === true"> Hello world ! </div> <!-- --> <div> <img data-ng-src="{{ ::e.creatorAvatar }}"> </div> </ion-item> </ion-list> </ion-content> </ion-view>

现在我如何找到结果集,如:

enter image description here

.ie我想找到三列相同的所有行。

3 个答案:

答案 0 :(得分:3)

select t1.*
from your_table t1
join
(
    select name, father_name, region
    from your_table
    group by name, father_name, region
    having count(*) >= 3
) t2 on t1.name = t2.name 
    and t1.father_name = t2.father_name
    and t1.region = t2.region 

答案 1 :(得分:1)

如果您使用的是MySql 8.0,则可以使用窗口功能。下面用这样的函数查询返回精确输出:

select id, name, fatherName, country from (
    select id,
           name,
           fatherName,
           country,
           count(id) over (partition by name, fatherName, country) cnt
    from Tbl
) `a` where cnt > 1;

答案 2 :(得分:0)

实际上,我还需要多次使用这种类型的功能,我需要比较具有相同值的所有列,除了自动递增的主键id列。

因此,在这种情况下,我总是按关键字使用分组。

实施例,

SELECT A.*
FROM YourTable A
INNER JOIN (SELECT name,city,state
        FROM YourTable
        GROUP BY name,city,state
        HAVING COUNT(*) > 1) B
ON A.name = B.name AND A.city = B.city AND A.state = B.state

您可以追加要比较的列数

希望,这也可以帮助你。