Ive得到了这样一个表,其中我在寻找不必要的重复行:在没有指定值的情况下在三列中查找具有重复项的行?
我想找到其中第一个名字,姓氏,和职业栏是相同的所有行 - 在这种案例行1和3.我不想指定相同的值应该是什么,因为我不知道。
我试过this question的答案,但我不认为它适用于这种情况。
Ive得到了这样一个表,其中我在寻找不必要的重复行:在没有指定值的情况下在三列中查找具有重复项的行?
我想找到其中第一个名字,姓氏,和职业栏是相同的所有行 - 在这种案例行1和3.我不想指定相同的值应该是什么,因为我不知道。
我试过this question的答案,但我不认为它适用于这种情况。
自加入,3次(未测试):SELECT *一个从your_table一个,your_table B,your_table C,your_table d 其中 a.fname = b.fname和a.lname = c.lname和一个。职业= d.occupation
简单的解决方法是增加一个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
不错!我试图使用一些复杂的'加入',但你的解决方案更优雅! – Cynical
@Cynical谢谢:)我已经尝试编写这么多复杂的查询只是为了得到一些简单的解决方案太大lol –
您的查询返回行1和2,而不是第1和第3行。 – blarg