mysql - 在不指定值的情况下查找三列中重复的行?

标签 mysql duplicates

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

enter image description here

我想查找名字、姓氏和职业列相同的任何行 - 在本例中为第 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/

相关文章:

php - Laravel 5.4 事务和一对多关系

mysql - 如何添加索引,重用一些列?

MySQL - 独特的电子邮件,拥有最多货币的用户

r - 满足条件的样本对

java - 当我有一个用于相同目的的网站(php)时通过应用程序登录

mysql - 在mysql中多次尝试失败后禁用客户端主机连接

java - 如何在 Java 代码中连接来自不同数据库(MySql、Vertica)的两个表?

java - 在 java jar 中有重复类的含义是什么?

python - 重复信息

javascript - 从 Javascript 中的对象中删除过多重复项的最佳方法是什么?