SQL запрос, чтобы найти дубликаты записей - PullRequest
13 голосов
/ 21 июля 2011

Что такое SQL-запрос, чтобы найти дубликаты записей и отобразить их по убыванию, исходя из наибольшего количества и идентификатора, отображающего записи.

например:

получить счет можно с помощью

select title, count(title) as cnt from kmovies group by title order by cnt desc

и результат будет как

title cnt

ravi   10
prabhu  9
srinu   6

Теперь, каков запрос для получения результата, как показано ниже:

ravi
ravi
ravi
...10 times
prabhu
prabhu..9 times
srinu
srinu...6 times

Ответы [ 5 ]

16 голосов
/ 21 июля 2011

Если ваша СУБД поддерживает предложение OVER ...

SELECT
   title
FROM
    (
    select
       title, count(*) OVER (PARTITION BY title) as cnt
    from
      kmovies
    ) T
ORDER BY
   cnt DESC
6 голосов
/ 21 июля 2011

Вы можете сделать это одним запросом:

Select t.Id, t.title, z.dupCount
From yourtable T
Join
   (select title, Count (*) dupCount
    from yourtable 
    group By title
    Having Count(*) > 1) z
   On z.title = t.Title
order By dupCount Desc
5 голосов
/ 18 декабря 2014

В этом запросе используются предложения Group By и Having, чтобы вы могли выбирать (находить и перечислять) для каждой дублирующейся записи.Предложение As удобно для ссылки на Quantity в предложениях select и Order By, но на самом деле это не часть получения дублирующих строк.

Select
    Title,
    Count( Title ) As [Quantity]
   From
    Training
   Group By
    Title
   Having 
    Count( Title ) > 1
   Order By
    Quantity desc
1 голос
/ 22 января 2013
select distinct title, (
               select count(title) 
               from kmovies as sub 
               where sub.title=kmovies.title) as cnt 
from kmovies 
group by title 
order by cnt desc
0 голосов
/ 21 июля 2011

Вы не можете сделать это как простой запрос, но это будет делать:

select title
from kmovies
where title in (
    select title
    from kmovies
    group by title
    order by cnt desc
    having count(title) > 1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...