06/04/2021, 14:50

Lọc dữ liệu trùng với DISTINCT trong SQL - Ngôn ngữ truy vấn T-SQL

Đôi khi có những câu truy vấn có kết quả bị trùng lặp thì lúc này ta lại muốn loại bỏ dữ liệu bị trùng đó và chỉ giữ lại một record duy nhất mà thôi. Để làm được việc này thì ta sử dụng lệnh DISTINCT. 1. Cú pháp lệnh DISTINCT Trước tiên bạn tham khảo cú pháp như sau: ...

Đôi khi có những câu truy vấn có kết quả bị trùng lặp thì lúc này ta lại muốn loại bỏ dữ liệu bị trùng đó và chỉ giữ lại một record duy nhất mà thôi. Để làm được việc này thì ta sử dụng lệnh DISTINCT.

1. Cú pháp lệnh DISTINCT

Trước tiên bạn tham khảo cú pháp như sau:

SELECT DISTINCT column_list
FROM table_name

Như vậy ta chỉ cần đặt DISTINCT kế lệnh SELECT.

2. Lệnh DISTINCT lọc dữ liệu bị trùng

DISTINCT có công dụng là xóa đi những dòng dữ liệu trùng nhau và chỉ để lại một dòng duy nhất. Dữ liệu trùng nhau là phải giống ở mọi column, dù khác chỉ 1 column thôi cũng không được gọi là trùng nhau.

Giả sử ta có bảng dữ liệu như 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 

Nhìn vào bảng thì ta thấy khóa chính là ID và nó tăng tự động nên chắc chắn là dữ liệu ở mỗi record sẽ không bị trùng. Tuy nhiên bạn hãy xét ví dụ sau đây: hãy lấy danh sách  mức tiền của các khách hàng và chỉ trả về mỗi cột SALARY mà thôi. Lúc này rõ ràng dữ liệu sẽ bị trùng.

Câu truy vấn
SELECT SALARY FROM CUSTOMERS
ORDER BY SALARY

Kết quả
SALARY 
1500.00 
2000.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00

Để giải quyết ta sử dụng DISTINCT như sau:

SELECT DISTINCT SALARY FROM CUSTOMERS 
   ORDER BY SALARY 

Kết quả trả về sẽ như sau:

SALARY 
1500.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00 

Lệnh này tương đối đơn giản nên nội dung cũng không có gì nhiều.

Trịnh Tiến Mạnh

27 chủ đề

6824 bài viết

Cùng chủ đề
0