Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Hiển thị tất cả các hàng trùng lặp

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:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham gia 100 bảng

  2. gặp sự cố khi cố gắng khôi phục cơ sở dữ liệu được mã hóa

  3. Tối ưu hóa Xóa trên SQL Server

  4. newid () bên trong hàm máy chủ sql

  5. Không thể sử dụng hiệu chính đặc biệt 'sa'