sql >> Base de Datos >  >> RDS >> Sqlserver

Mostrar todas las filas duplicadas

Encontró sus registros duplicados pero está interesado en obtener toda la información adjunta a ellos. Necesitas join sus duplicados a su tabla principal para obtener esa información.

select *
  from my_table a
  join ( select firstname, lastname 
           from my_table 
          group by firstname, lastname 
         having count(*) > 1 ) b
    on a.firstname = b.firstname
   and a.lastname = b.lastname

Esto es lo mismo que una inner join y significa que para cada registro en su subconsulta, que encontró los registros duplicados, encontrará todo lo que tenga en su tabla principal que tenga la misma combinación visto por primera vez y visto por última vez.

También puede hacer esto con in, aunque debe probar la diferencia :

select *
  from my_table a
 where ( firstname, lastname ) in   
       ( select firstname, lastname 
           from my_table 
          group by firstname, lastname 
         having count(*) > 1 )

Lecturas adicionales: