Hai trovato i tuoi record duplicati ma sei interessato a ottenere tutte le informazioni ad essi allegate. Devi join
i tuoi duplicati nella tabella principale per ottenere tali informazioni.
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
È lo stesso di un inner join
e significa che per ogni record nella tua sottoquery, che ha trovato i record duplicati, trovi tutto dalla tua tabella principale che ha la stessa combinazione primo visto e ultimo visto.
Puoi farlo anche con in, anche se dovresti testare la differenza :
select *
from my_table a
where ( firstname, lastname ) in
( select firstname, lastname
from my_table
group by firstname, lastname
having count(*) > 1 )
Ulteriori letture:
- Una rappresentazione visiva di si unisce da Coding Horror
- Unisciti alla spiegazione da Wikipedia