首页 > 解决方案 > 如何在不给出任何键的情况下选择表中所有重复的数据?

问题描述

我有一个包含数千个数据但重复数据的表。现在我想自动选择所有这些而不给出任何键。请问我该怎么做?

例子:

|id|name   |email|
---+-------+-----+
|1 |William|same1|
|2 |John   |same1|
|3 |Nabeel |same2|
|4 |Jessica|same3|
|5 |Adam   |same3|
|6 |Albert |same1|
|7 |Mark   |same3|
|8 |Jason  |same3|

如何选择唯一重复的?

标签: mysql

解决方案


我认为您正在寻找COUNT()GROUP BY 与 HAVING

SELECT name, email, COUNT(*)
FROM users
GROUP BY name, email
HAVING COUNT(*) > 1;

每@PatrickQ 这里只是重复的电子邮件之一:

SELECT email, COUNT(*)
FROM users
GROUP BY email
HAVING COUNT(*) > 1;

..这是一个会重复名字的

SELECT name, COUNT(*)
FROM users
GROUP BY name
HAVING COUNT(*) > 1;

当有多个电子邮件地址时,这将返回与每个电子邮件地址关联的名称数量:

SELECT email, COUNT(DISTINCT name)
FROM users
GROUP BY email
HAVING COUNT(DISTINCT name) > 1

推荐阅读