表中查询重复的数据,如何通过sql语句查询?

1、最直观的思路:要知道所有名字有重复人资料,首先必须知道哪个名字重复了:
select name from emp group by name having count(*)>1
所有名字重复人的记录是:
select * from emp 
where name in (select name from emp group by name having count(*)>1)

2、稍微再聪明一点,就会想到,如果对每个名字都和原表进行比较,大于2个人名字与这条记录相同的就是合格的 ,就有:
select * from emp 
where (select count(*) from emp e where e.name=emp.name) >1

原文地址:https://www.cnblogs.com/beijingstruggle/p/4968716.html