在没有指定值的情况下在三列中查找具有重复项的行?

时间:2014-07-14 14:02:36

标签: mysql duplicate-removal

我有一个这样的表,我正在寻找不必要的重复行:

enter image description here

我想找到First Name,Last Name和Occupation列相同的行 - 在这种情况下是行1和3.我不想指定相同的值应该是什么,因为我不知道。< / p>

我已经尝试了this question的答案,但我不认为它适用于这种情况。

2 个答案:

答案 0 :(得分:1)

简单的解决方案是添加一个HAVING子句,其中所有三列分组后都有重复

SELECT 
    ID, FirstName, LastName, Occupation, Age
FROM table1
GROUP BY 
    FirstName, 
    LastName, 
    Occupation
HAVING COUNT(*) > 1

这是一个DEMO,其中有两行重复,以确保其正常运行


修改

我的第一个理解是你想要在重复时返回一行..如果你想要一个将返回所有重复行的查询.. 然后在这里......这将返回第1行和第3行

SELECT p1.* FROM people p
JOIN people p1 
    ON p1.firstname = p.firstname 
    AND p1.lastname = p.lastname  
    AND p1.occupation = p.occupation
GROUP BY id
HAVING COUNT(*) > 1;

另一个DEMO

答案 1 :(得分:0)

自我加入,3次(未经测试):从your_table a,your_table b,your_table c,your_table d中选择a。* 哪里 a.fname = b.fname和a.lname = c.lname和a.occupation = d.occupation