我想找到重复的数据吗?只显示重复记录?

时间:2018-11-26 07:18:36

标签: mysql duplicates

在我的表中有这样的数据

+-----+----------+  
| sno | name     |  
+-----+----------+  
| 101 | Raju     |  
| 102 | Raju     |  
| 103 | Santhosh |  
| 104 | Santhosh |  
| 105 | madhavi  |  
| 106 | suheel   |  
+-----+----------+  

我要查找重复记录并仅显示sno(number)
例如输出应该是这样

+-----+  
| sno |  
+-----+  
| 101 |  
| 102 |  
| 103 |  
| 104 |  
+-----+  

3 个答案:

答案 0 :(得分:1)

在派生表中,获取所有具有重复项的name值。为此,我们可以在GROUP BYname并使用HAVING仅考虑那些名称,其中COUNT(*)name的总行数)是大于1。

现在,我们可以联接回主表以获取它们各自的sno

SELECT
 t.sno
FROM your_table t
JOIN (SELECT name 
      FROM your_table 
      GROUP BY name
      HAVING COUNT(*) > 1) dt
  ON dt.name = t.name 

答案 1 :(得分:0)

这是MySQL 8+的一种实现方式:

return -1

答案 2 :(得分:0)

您可以尝试使用相关子查询

select sno from tablename a 
where name in (select 1 from tablename b where a.name=b.name having count(name)>1 )