Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách lấy các giá trị riêng biệt có trong một cột cụ thể của Bảng MySQL đã cho
Để nhận các giá trị duy nhất hoặc riêng biệt của một cột trong Bảng MySQL, hãy sử dụng Truy vấn SQL sau
SELECT DISTINCT[column_name] FROM your_table_name;
Bạn có thể chọn các giá trị riêng biệt cho một hoặc nhiều cột. Các tên cột phải được phân tách bằng dấu phẩy
SELECT DISTINCT column_name_1, column_name_2 FROM your_table_name;
Truy vấn trên chọn số hàng tối thiểu có các giá trị duy nhất cho mỗi cột được chỉ định trong truy vấn
Trong hướng dẫn này, bạn sẽ học cách sử dụng mệnh đề
SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 trong câu lệnh SELECT
lastname
FROM
employees
ORDER BY
lastname;
2 trong MySQL để loại bỏ các hàng trùng lặp trong một tệp kết quảGiới thiệu về mệnh đề MySQL DISTINCT
Khi truy vấn dữ liệu từ một bảng, bạn có thể nhận được các hàng lặp lại. Để loại bỏ các hàng trùng lặp này, bạn sử dụng mệnh đề
SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 trong câu lệnh SELECT
lastname
FROM
employees
ORDER BY
lastname;
4Đây là cú pháp của mệnh đề
SELECT
lastname
FROM
employees
ORDER BY
lastname;
1SELECT 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 từ khóa
SELECT
lastname
FROM
employees
ORDER BY
lastname;
6Nếu bạn chỉ định một cột, mệnh đề
SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 sẽ đánh giá tính duy nhất của các hàng dựa trên giá trị của cột đóTuy nhiên, nếu bạn chỉ định hai hoặc nhiều cột, mệnh đề
SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 sẽ sử dụng giá trị của các cột này để đánh giá tính duy nhất của hàng hóaKhi thực hiện câu lệnh
SELECT
lastname
FROM
employees
ORDER BY
lastname;
2 với mệnh đề SELECT
lastname
FROM
employees
ORDER BY
lastname;
1, MySQL đánh giá mệnh đề SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 sau mệnh đề +-----------+
| lastname |
+-----------+
| Bondur |
| Bondur |
| Bott |
| Bow |
| Castillo |
| Firrelli |
| Firrelli |
| Fixter |
....
| Jones |
| Patterson |
| Patterson |
| Patterson |
| Thompson |
...
+-----------+
23 rows in set [0.00 sec]
2, +-----------+
| lastname |
+-----------+
| Bondur |
| Bondur |
| Bott |
| Bow |
| Castillo |
| Firrelli |
| Firrelli |
| Fixter |
....
| Jones |
| Patterson |
| Patterson |
| Patterson |
| Thompson |
...
+-----------+
23 rows in set [0.00 sec]
3 và SELECT
lastname
FROM
employees
ORDER BY
lastname;
2 và trước mệnh đề +-----------+
| lastname |
+-----------+
| Bondur |
| Bondur |
| Bott |
| Bow |
| Castillo |
| Firrelli |
| Firrelli |
| Fixter |
....
| Jones |
| Patterson |
| Patterson |
| Patterson |
| Thompson |
...
+-----------+
23 rows in set [0.00 sec]
5Ví dụ về mệnh đề DISTINCT trong MySQL
Chúng tôi sẽ sử dụng bảng
+-----------+
| lastname |
+-----------+
| Bondur |
| Bondur |
| Bott |
| Bow |
| Castillo |
| Firrelli |
| Firrelli |
| Fixter |
....
| Jones |
| Patterson |
| Patterson |
| Patterson |
| Thompson |
...
+-----------+
23 rows in set [0.00 sec]
6 từĐầu tiên, truy xuất họ của các nhân viên từ bảng
+-----------+
| lastname |
+-----------+
| Bondur |
| Bondur |
| Bott |
| Bow |
| Castillo |
| Firrelli |
| Firrelli |
| Fixter |
....
| Jones |
| Patterson |
| Patterson |
| Patterson |
| Thompson |
...
+-----------+
23 rows in set [0.00 sec]
6 bằng cách sử dụng câu lệnh SELECT
lastname
FROM
employees
ORDER BY
lastname;
2 sauSELECT
lastname
FROM
employees
ORDER BY
lastname;
đầu ra
+-----------+
| lastname |
+-----------+
| Bondur |
| Bondur |
| Bott |
| Bow |
| Castillo |
| Firrelli |
| Firrelli |
| Fixter |
....
| Jones |
| Patterson |
| Patterson |
| Patterson |
| Thompson |
...
+-----------+
23 rows in set [0.00 sec]
Như đã được trình bày rõ ràng trong đầu ra, một số nhân viên có cùng họ, ví dụ.
+-----------+
| lastname |
+-----------+
| Bondur |
| Bondur |
| Bott |
| Bow |
| Castillo |
| Firrelli |
| Firrelli |
| Fixter |
....
| Jones |
| Patterson |
| Patterson |
| Patterson |
| Thompson |
...
+-----------+
23 rows in set [0.00 sec]
9Thứ hai, truy xuất họ duy nhất của các nhân viên bằng cách bổ sung mệnh đề
SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 như sauSELECT
DISTINCT lastname
FROM
employees
ORDER BY
lastname;
Như bạn có thể thấy rõ ràng từ đầu ra, mệnh đề
SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 loại bỏ các lần lặp của chúng khỏi kết quả tập tin+-----------+
| lastname |
+-----------+
| Bondur |
| Bott |
| Bow |
| Castillo |
| Firrelli |
...
| Nishi |
| Patterson |
| Thompson |
| Tseng |
| Vanauf |
+-----------+
19 rows in set [0.01 sec]
Mệnh đề DISTINCT trong MySQL và giá trị NULL
Khi bạn chỉ định một cột có các giá trị
SELECT
DISTINCT lastname
FROM
employees
ORDER BY
lastname;
2 trong các mệnh đề SELECT
lastname
FROM
employees
ORDER BY
lastname;
1, thì mệnh đề SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 sẽ chỉ giữ một mệnh giá trị SELECT
DISTINCT lastname
FROM
employees
ORDER BY
lastname;
2 vì nó coi tất cả các giá trị SELECT
DISTINCT lastname
FROM
employees
ORDER BY
lastname;
2 đều giống nhauVí dụ, cột trạng thái trong bảng
SELECT
DISTINCT lastname
FROM
employees
ORDER BY
lastname;
7 có các giá trị SELECT
DISTINCT lastname
FROM
employees
ORDER BY
lastname;
2Khi bạn sử dụng mệnh đề
SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 để truy xuất các bang, bạn sẽ thấy các bang riêng biệt và SELECT
DISTINCT lastname
FROM
employees
ORDER BY
lastname;
2 như sauSELECT DISTINCT state
FROM customers;
đầu ra
+---------------+
| state |
+---------------+
| NULL |
| NV |
| Victoria |
| CA |
| NY |
| PA |
...
| Co. Cork |
| Pretoria |
| NH |
| Tokyo |
+---------------+
19 rows in set [0.00 sec]
Mệnh đề DISTINCT trong MySQL với nhiều cột
Khi bạn chỉ định nhiều cột trong mệnh đề
SELECT
lastname
FROM
employees
ORDER BY
lastname;
1, mệnh đề SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 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 hàng hóa trong kết quả tập tinVí dụ. to have been sự hợp nhất duy nhất giữa thành phố và tiểu bang from the table
SELECT
DISTINCT lastname
FROM
employees
ORDER BY
lastname;
7, you used query afterSELECT DISTINCT
state, city
FROM
customers
WHERE
state IS NOT NULL
ORDER BY
state,
city;
đầu ra
+---------------+----------------+
| 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 đề
SELECT
lastname
FROM
employees
ORDER BY
lastname;
1 này, bạn sẽ nhận được sự kết hợp lặp lại của tiểu bang và thành phố như sau