SQL - Xử lý các bản sao

Có thể có một tình huống khi bạn có nhiều bản ghi trùng lặp trong một bảng. Trong khi tìm nạp các bản ghi như vậy, sẽ hợp lý hơn nếu chỉ tìm nạp các bản ghi duy nhất thay vì tìm nạp các bản ghi trùng lặp.

SQL DISTINCT từ khóa mà chúng ta đã thảo luận được sử dụng cùng với câu lệnh SELECT để loại bỏ tất cả các bản ghi trùng lặp và bằng cách chỉ tìm nạp các bản ghi duy nhất.

Cú pháp

Cú pháp cơ bản của từ khóa 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]

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Trước tiên, chúng ta hãy xem cách truy vấn SELECT sau đây trả về các bản ghi lương trùng lặp.

SQL> SELECT SALARY FROM CUSTOMERS
   ORDER BY SALARY;

Điều này sẽ tạo ra kết quả sau đây trong đó mức lương năm 2000 tăng gấp đôi, đây là một bản ghi trùng lặp từ bảng gốc.

+----------+
| SALARY   |
+----------+
|  1500.00 |
|  2000.00 |
|  2000.00 |
|  4500.00 |
|  6500.00 |
|  8500.00 |
| 10000.00 |
+----------+

Bây giờ, chúng ta hãy sử dụng từ khóa DISTINCT với truy vấn SELECT ở trên và xem kết quả.

SQL> SELECT DISTINCT SALARY FROM CUSTOMERS
   ORDER BY SALARY;

Điều này sẽ tạo ra kết quả sau đây mà chúng tôi không có bất kỳ mục nhập trùng lặp nào.

+----------+
| SALARY   |
+----------+
|  1500.00 |
|  2000.00 |
|  4500.00 |
|  6500.00 |
|  8500.00 |
| 10000.00 |
+----------+