MySQL列出所有重复项
可能重复:MySQL列出所有重复项,mysql,sql,select,duplicates,Mysql,Sql,Select,Duplicates,可能重复: 我在MySQL中有这样一个表: ID name email 1 john abc@abc.com 2 johnny abc@abc.com 3 jim eee@eee.com 4 Michael abec@awwbc.com 我怎么能让MySQL查询列出这样的重复查询 重复搜索的结果: ID name email Duplicate 1 john abc@abc.com
我在MySQL中有这样一个表:
ID name email
1 john abc@abc.com
2 johnny abc@abc.com
3 jim eee@eee.com
4 Michael abec@awwbc.com
我怎么能让MySQL查询列出这样的重复查询
重复搜索的结果:
ID name email Duplicate
1 john abc@abc.com 2
2 johnny abc@abc.com 2
电子邮件
列中添加索引
或
SELECT t1.id, t1.name, t1.email FROM t1 INNER JOIN (
SELECT colA,colB,COUNT(*) FROM t1 GROUP BY colA,colB HAVING COUNT(*)>1) as t2
ON t1.email = t2.email;
如果您可以将ID和名称放在逗号分隔的列表中,那么您可以尝试:
select email, count(*) as numdups,
group_concat(id order by id), group_concat(name order by id)
from t
group by email
having count(*) > 1
这将保存一个联接,尽管结果不是关系格式。这个问题已经得到了回答:@JW我做错了什么,还是您编写了太复杂的查询?请看我的答案。@Kamil您的查询结果必须有两条记录:
ID1和2
。我想您可能不明白我在问什么。只有一个表,下表是mySQL查询的结果,而不是数据库中的另一个表。@user1995781查询只涉及一个表。
SELECT t1.id, t1.name, t1.email FROM t1 INNER JOIN (
SELECT colA,colB,COUNT(*) FROM t1 GROUP BY colA,colB HAVING COUNT(*)>1) as t2
ON t1.email = t2.email;
select email, count(*) as numdups,
group_concat(id order by id), group_concat(name order by id)
from t
group by email
having count(*) > 1