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

ltqd579y  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(271)

在我的表中有这样的数据

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

在这种情况下,我想找到重复记录和显示sno(数字)只
例如,输出应该是这样的

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

baubqpgj1#

以下是mysql 8+的实现方法:

SELECT sno
FROM
(
    SELECT t.*, COUNT(*) OVER (PARTITION BY name) cnt
    FROM yourTable t
) t
WHERE cnt > 1;
5kgi1eie

5kgi1eie2#

在派生表中,获取 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
oxcyiej7

oxcyiej73#

可以尝试使用相关子查询

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

相关问题