Từ khóa DISTINCT trong SQL được sử dụng kết hợp với câu lệnh SELECT để loại bỏ tất cả các bản ghi trùng lặp và chỉ lấy các bản ghi duy nhất.
Có thể có tình huống khi bạn có nhiều bản ghi trùng lặp trong một bảng. Trong khi lấy ra bản ghi như vậy, chỉ cần lấy ra những bản ghi duy nhất đó thay vì lấy các bản ghi trùng lặp.
Cú pháp
Cú pháp cơ bản của từ khoá DISTINCT để loại bỏ các bản ghi trùng lặp như sau:
SELECT DISTINCT column1, column2,.....columnN FROM table_name WHERE [condition]
Ví dụ
Giả sử bảng CUSTOMERS có các bản ghi sau đây:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+
Trước tiên, chúng ta hãy xem câu truy vấn SELECT sau đây trả về bản ghi mức lương trùng lặp như thế nào.
SELECT SALARY FROM CUSTOMERS ORDER BY SALARY;
Điều này sẽ tạo ra kết quả sau, trong đó mức lương (2000) sắp tới hai lần là bản ghi trùng lặp từ bảng ban đầu.
+----------+ | SALARY | +----------+ | 1500.00 | | 2000.00 | | 2000.00 | | 4500.00 | | 6500.00 | | 8500.00 | | 10000.00 | +----------+
Bây giờ, hãy sử dụng từ khóa DISTINCT với truy vấn SELECT ở trên và sau đó xem kết quả.
SELECT DISTINCT SALARY FROM CUSTOMERS ORDER BY SALARY;
Điều này sẽ tạo ra kết quả sau khi chúng tôi không có mục nhập trùng lặp.
+----------+ | SALARY | +----------+ | 1500.00 | | 2000.00 | | 4500.00 | | 6500.00 | | 8500.00 | | 10000.00 | +----------+