Я хочу найти дубликаты данных?и отображать только дубликаты записей? - PullRequest
0 голосов
/ 26 ноября 2018

в моей таблице, имеющей такие данные

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

, в которой я хочу найти записи dupliacte и отображать только sno (число)
например, вывод должен быть таким

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

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018

Вот способ MySQL 8+ сделать это:

SELECT sno
FROM
(
    SELECT t.*, COUNT(*) OVER (PARTITION BY name) cnt
    FROM yourTable t
) t
WHERE cnt > 1;
0 голосов
/ 26 ноября 2018

Вы можете попробовать использовать коррелированный подзапрос

select sno from tablename a 
where name in (select 1 from tablename b where a.name=b.name having count(name)>1 )
0 голосов
/ 26 ноября 2018

В производной таблице получите все значения name, которые имеют дубликаты.Для этого мы можем GROUP BY на name и использовать 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 
...