Tiếp tục với seri MySQL cơ bản. Trong bài viết này, bạn sẽ học được cách sử dụng mệnh đề MySQL DISTINCT trong câu lệnh SELECT để loại bỏ các hàng trùng lặp trong tập kết quả.
Khi truy vấn dữ liệu từ một bảng, bạn có thể nhận được các bản ghi trùng lặp. Để loại bỏ các bản ghi trùng lặp này, bạn sử dụng mệnh đề DISTINCT trong câu lệnh SELECT.
Đây là cú pháp của mệnh đề DISTINCT :
SELECT DISTINCT
select_list
FROM
table_name
WHERE
search_condition
ORDER BY
sort_expression;Trong cú pháp này, bạn chỉ định một hoặc nhiều cột mà bạn muốn chọn các giá trị riêng biệt sau các từ khóa SELECT DISTINCT.
Nếu bạn chỉ định một cột, mệnh đề DISTINCT sẽ đánh giá tính duy nhất của các hàng dựa trên các giá trị của cột đó.
Tuy nhiên, nếu bạn chỉ định hai hoặc nhiều cột, mệnh đề DISTINCT sẽ sử dụng giá trị của các cột này để đánh giá tính duy nhất của các hàng.
Khi thực hiện câu lệnh SELECT với mệnh đề DISTINCT, MySQL đánh giá mệnh đề DISTINCT sau mệnh đề FROM, WHERE,và SELECT và trước mệnh đề ORDER BY :
![]()
Chúng tôi sẽ sử dụng bảng employees từ cơ sở dữ liệu mẫu:

Đầu tiên, chọn họ từ bảng employees bằng cách sử dụng câu lệnh SELECT sau:
SELECT
lastname
FROM
employees
ORDER BY
lastname;Kết quả:
+-----------+ | lastname | +-----------+ | Bondur | | Bondur | | Bott | | Bow | | Castillo | | Firrelli | | Firrelli | | Fixter | .... | Jones | | Patterson | | Patterson | | Patterson | | Thompson | ... +-----------+ 23 rows in set (0.00 sec)
Khi bạn chỉ định một cột có giá trị NULL trong mệnh đề DISTINCT, mệnh đề DISTINCTsẽ chỉ giữ một giá trị NULL vì nó coi tất cả các giá trị NULL đều giống nhau.
Ví dụ, cột trạng thái trong bảng khách hàng có giá trị NULL.

Khi bạn sử dụng mệnh đề DISTINCTđể truy vấn các trạng thái, bạn sẽ thấy các trạng thái riêng biệt và NULL như sau:
SELECT DISTINCT state FROM customers;
Kết quả:
+---------------+ | state | +---------------+ | NULL | | NV | | Victoria | | CA | | NY | | PA | ... | Co. Cork | | Pretoria | | NH | | Tokyo | +---------------+ 19 rows in set (0.00 sec)
Khi bạn chỉ định nhiều cột trong mệnh đề DISTINCT , mệnh đề DISTINCT sẽ sử dụng kết hợp các giá trị trong các cột này để xác định tính duy nhất của bản ghi trong tập kết quả.
Ví dụ: để có được sự kết hợp duy nhất giữa thành phố và tiểu bang từ bảng khách hàng, bạn sử dụng truy vấn sau:
SELECT DISTINCT
state, city
FROM
customers
WHERE
state IS NOT NULL
ORDER BY
state,
city;Kết quả:
+---------------+----------------+ | state | city | +---------------+----------------+ | BC | Tsawassen | | BC | Vancouver | | CA | Brisbane | | CA | Burbank | | CA | Burlingame | | CA | Glendale | | CA | Los Angeles | | CA | Pasadena | | CA | San Diego | ...
Nếu không có mệnh đề DISTINCT , bạn sẽ nhận được kết hợp trùng lặp giữa tiểu bang và thành phố như sau:
SELECT
state, city
FROM
customers
WHERE
state IS NOT NULL
ORDER BY
state ,
city;Kết quả:
+---------------+----------------+ | state | city | +---------------+----------------+ | BC | Tsawassen | | BC | Vancouver | | CA | Brisbane | | CA | Burbank | .. | CA | San Francisco | | CA | San Francisco | ... | MA | Boston | | MA | Boston | | MA | Brickhaven | | MA | Brickhaven | | MA | Brickhaven | ... | NY | NYC | | NY | NYC | | NY | NYC | | NY | NYC | | NY | NYC | ...
DISTINCTđể loại bỏ các hàng trùng lặp khỏi tập kết quả được trả về bởi mệnh đề SELECT .Bài viết liên quan:
Các bạn có thể xem thêm ở đây: https://www.mysqltutorial.org/mysql-order-by/
Bình luận: