2011-07-21 27 views
12

¿cuál es la consulta sql para encontrar los registros duplicados y mostrar en forma descendente, en función del recuento más alto y la identificación mostrar los registros.consulta sql para encontrar los registros duplicados

por ejemplo:

conseguir el recuento se puede hacer con

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

y el resultado será como

title cnt 

ravi 10 
prabhu 9 
srinu 6 

ahora cuál es la consulta para obtener el resultado, como a continuación:

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

¿Qué RDBMS por favor? – gbn

Respuesta

16

Si su RDBMS es compatible con la cláusula OVER .. .

SELECT 
    title 
FROM 
    (
    select 
     title, count(*) OVER (PARTITION BY title) as cnt 
    from 
     kmovies 
    ) T 
ORDER BY 
    cnt DESC 
+0

gracias a un millón que funcionó muy bien .. – Tan

0

Usted no puede hacerlo como una simple consulta única, pero esto haría:

select title 
from kmovies 
where title in (
    select title 
    from kmovies 
    group by title 
    order by cnt desc 
    having count(title) > 1 
) 
+1

Esto no dará resultados correctos porque no repite filas en COUNT (*) orden descendente. Esto no es * outermost * ORDER BY así que el orden es arbritrary. Y hay otras 2 respuestas con una sola solución de consulta – gbn

5

Puede hacerlo de una sola consulta:

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 
1
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 
3

Esta consulta utiliza los Group By y Having y cláusulas para permitirle seleccionar (loc comió y lista) para cada registro duplicado. La cláusula As es una conveniencia para referirse a Quantity en las cláusulas select y Order By, pero no es realmente parte de obtener las filas duplicadas.

Select 
    Title, 
    Count(Title) As [Quantity] 
    From 
    Training 
    Group By 
    Title 
    Having 
    Count(Title) > 1 
    Order By 
    Quantity desc 
Cuestiones relacionadas