Tình huống:
Bạn đang làm việc với tư cách là nhà phát triển SQL Server. Bạn cần viết truy vấn cho bảng dbo.Customer sẽ trả về các bản ghi trùng lặp và số lượng bản ghi trùng lặp.Giải pháp:
Bạn có thể sử dụng hàm tổng hợp Nhóm theo và Đếm để tìm tất cả các bản ghi trùng lặp trong bảng và đếm.Giả sử rằng chúng ta có bảng dbo.Customer với định nghĩa và dữ liệu bên dưới. Chúng tôi muốn tìm bản ghi nếu nó bị trùng lặp bởi các cột FName, LName và CountryShortName.
Create table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2), SaleAmount Int) GO --Insert Rows in dbo.Customer Table insert into dbo.Customer Values ( 1,'Raza','M','PK',10), (2,'Rita','John','US',12), (3,'Sukhi','Singh',Null,25), (4,'James','Smith','CA',60), (5,'Robert','Ladson','US',54), (6,'Alice','John','US',87), (6,'Raza','M','Pk',Null)
Hãy viết truy vấn của chúng tôi, chúng tôi đã bao gồm tất cả các cột trong danh sách chọn với số đếm (*) và sau đó nhóm theo các cột giống nhau. Ở phần cuối, chúng ta sẽ sử dụng mệnh đề Có để lọc bản ghi bị trùng lặp.
SELECT fname, lname, countryshortname, Count(*) AS RecordCount FROM dbo.customer GROUP BY fname, lname, countryshortname HAVING Count(*) > 1
Từ dữ liệu, chúng ta có thể thấy rằng bản ghi duy nhất bị trùng lặp bởi tên viết tắt của FName, LName và Country là 'Raza', 'M', 'PK' và có tổng cộng hai bản ghi được trả về bởi truy vấn của chúng tôi.
Cách tìm các bản ghi trùng lặp bằng cách sử dụng Mệnh đề Nhóm theo và Có trong SQL Server