Bạn đã tìm thấy các bản ghi trùng lặp của mình nhưng bạn quan tâm đến việc nhận được tất cả thông tin đính kèm với chúng. Bạn cần join
các bản sao của bạn vào bảng chính của bạn để lấy thông tin đó.
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
Điều này giống như một inner join
và có nghĩa là đối với mọi bản ghi trong truy vấn phụ của bạn, tìm thấy các bản ghi trùng lặp, bạn sẽ tìm thấy mọi thứ từ bảng chính của mình có cùng kết hợp lần xem đầu tiên và lần xem cuối cùng.
Bạn cũng có thể thực hiện việc này với in, mặc dù bạn nên kiểm tra sự khác biệt :
select *
from my_table a
where ( firstname, lastname ) in
( select firstname, lastname
from my_table
group by firstname, lastname
having count(*) > 1 )
Đọc thêm:
- Trình bày trực quan về tham gia từ Coding Horror
- Tham gia giải thích từ Wikipedia