MySQL 在多个字段中查找重复项

MySQL look for duplicates on multiple fields

我有一个 MySQL 数据库,其中包含以下字段:

id, email, first_name, last_name

我想要 运行 一个 SQL 查询,该查询将显示 id 和 email 不止一次存在的行。

基本上,id 和 email 字段应该只有一行,我想 运行 查询是否有任何可能的重复项

你会想要这样的东西:

select field1,field2,field3, count(*)
from table_name
group by field1,field2,field3
having count(*) > 1

另见 this question

您可以通过分组并使用像这样的 having 子句来搜索满足特定计数的所有 ID:

SELECT id, COUNT(*) AS totalCount
FROM myTable
GROUP BY id
HAVING COUNT(*) > 1;

此查询 returns 中的任何内容均重复。要检查重复的电子邮件,您只需更改您选择的列即可。

如果您只想return重复的 id 和电子邮件,您可以只使用 GROUP BY 查询:

SELECT id, email
FROM yourtable
GROUP BY id, email
HAVING COUNT(*)>1

如果你还想return完整的行,那么你必须加入之前的查询:

SELECT yourtable.*
FROM
  yourtable INNER JOIN (
    SELECT id, email
    FROM yourtable
    GROUP BY id, email
    HAVING COUNT(*)>1
  ) s
  ON yourtable.id = s.id AND yourtable.email=s.email