Mệnh đề DISTINCT trong SQL Server
Trong SQL Server (Transact-SQL), mệnh đề DISTINCT được dùng để loại bỏ trùng lặp trong bộ kết quả trả về. Mệnh đề DISTINCT chỉ có thể dùng trong lệnh SELECT. Cú pháp mệnh đề DISTINCT SELECT DISTRINCT “biểu thức” FROM “bảng” [WHERE ...
Trong SQL Server (Transact-SQL), mệnh đề DISTINCT được dùng để loại bỏ trùng lặp trong bộ kết quả trả về. Mệnh đề DISTINCT chỉ có thể dùng trong lệnh SELECT.
Cú pháp mệnh đề DISTINCT
SELECT DISTRINCT “biểu thức”
FROM “bảng”
[WHERE “điều kiện”];
Tên biến hoặc giá trị biến
“biểu thức”
Cột hoặc giá trị tính toán mà bạn muốn lấy
“bảng”
Bảng dùng để lấy bản ghi. Phải có ít nhất 1 bảng trong mệnh đề FROM.
WHERE “điều kiện”
Tùy chọn. Điều kiện mà bản ghi phải đáp ứng để được chọn.
Lưu ý
- Khi mệnh đề DISTINCT chỉ có 1 biểu thức, truy vấn sẽ trả về các giá trị duy nhất cho biểu thức đó.
- Khi mệnh đề DISTINCT có nhiều hơn 1 biểu thức, truy vấn sẽ trả về tổ hợp duy nhất của các biểu thức.
Trong SQL Server, mệnh đề DISTINCT không bỏ qua giá trị NULL. Vậy nên khi dùng mệnh đề này trong lệnh, kết quả trả về sẽ có cả giá trị NULL duy nhất.
Ví dụ - 1 biểu thức
Ví dụ đơn giản nhất với mệnh đề DISTINCT trong SQL Server chỉ có 1 biểu thức.
SELECT DISTINCT ho
FROM nhanvien
WHERE nhanvien_id >= 50;
Ví dụ này sẽ trả về tất cả các giá trị họ của nhân viên từ bảng nhanvien với nhanvien_id lớn hơn hoặc bằng 50.
Ví dụ - nhiều biểu thức
SELECT DISTINCT ten, ho
FROM nhanvien
WHERE nhanvien_id >= 50
ORDER BY ho;
Ở ví dụ này, kết quả trả về sẽ là kết hợp tên và họ duy nhất từ bảng nhanvien khi nhanvien_id lớn hơn hoặc bằng 50. Kết quả được sắp xếp theo thứ tự tăng dần của họ nhân viên.
Trong trường hợp này, DISTINCT áp dụng với từng trường thông tin đằng sau từ khóa DISTINCT nên sẽ tạo ra các kết hợp tên - họ khác nhau.
Bài trước: Kết hợp điều kiện AND và OR trong SQL Server
Bài tiếp: Điều kiện IN trong SQL Server