我有一个像这样的表,我在其中寻找不必要的重复行:
我想查找名字、姓氏和职业列相同的任何行 - 在本例中为第 1 行和第 3 行。我不想指定相同的值应该是什么,因为我不知道。
我已经尝试过 this question 的答案,但我认为这不适用于本案。
最佳答案
简单的解决方案是添加一个 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
关于mysql - 在不指定值的情况下查找三列中重复的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24738346/