Loại bỏ trùng lặp

Đã hoàn thành

Mặc dù các hàng trong bảng phải luôn duy nhất, nhưng khi bạn chỉ chọn một tập hợp con của các cột, các hàng kết quả có thể không phải là duy nhất ngay cả khi các hàng ban đầu là duy nhất. Ví dụ: bạn có thể có một bảng nhà cung cấp với yêu cầu là thành phố và tiểu bang (hoặc tỉnh) là duy nhất để không bao giờ có nhiều nhà cung cấp ở bất kỳ thành phố nào. Tuy nhiên, nếu bạn chỉ muốn xem các thành phố và quốc gia/khu vực có nhà cung cấp, kết quả trả về có thể không phải là duy nhất. Giả sử bạn viết truy vấn sau đây:

SELECT City, CountryRegion
FROM Production.Supplier
ORDER BY CountryRegion, City;

Truy vấn này có thể trả về kết quả tương tự như sau:

Thành phố

Khu vực Quốc gia

Aurora

Canada

Barrie

Canada

Brampton

Canada

Brossard

Canada

Brossard

Canada

Burnaby

Canada

Burnaby

Canada

Burnaby

Canada

Calgary

Canada

Calgary

Canada

...

...

Theo mặc định, mệnh đề SELECT bao gồm một từ khóa ALL ngầm dẫn đến hành vi này:

SELECT ALL City, CountryRegion
FROM Production.Supplier
ORDER BY CountryRegion, City;

T-SQL cũng hỗ trợ một từ khóa DISTINCT thay thế để loại bỏ mọi hàng kết quả trùng lặp:

SELECT DISTINCT City, CountryRegion
FROM Production.Supplier
ORDER BY CountryRegion, City;

Khi sử dụng DISTINCT, ví dụ chỉ trả về một trong mỗi tổ hợp giá trị duy nhất trong danh sách SELECT:

Thành phố

Khu vực Quốc gia

Aurora

Canada

Barrie

Canada

Brampton

Canada

Brossard

Canada

Burnaby

Canada

Calgary

Canada

...

...