Mệnh đề MySQL DISTINCT được sử dụng để loại bỏ các bản sao khỏi tập kết quả. Mệnh đề DISTINCT chỉ có thể được sử dụng với câu lệnh SELECT
cú pháp
Cú pháp của mệnh đề DISTINCT trong MySQL là
SELECT DISTINCT expressions FROM tables [WHERE conditions];
Tham số hoặc Đối số
biểu thứcCác cột hoặc phép tính mà bạn muốn truy xuất. tableCác bảng mà bạn muốn truy xuất các bản ghi từ. Phải có ít nhất một bảng được liệt kê trong mệnh đề TỪ. điều kiện WHERETùy chọn. Các điều kiện phải được đáp ứng để hồ sơ được chọnGhi chú
- Khi chỉ có một biểu thức được cung cấp trong mệnh đề DISTINCT, truy vấn sẽ trả về các giá trị duy nhất cho biểu thức đó
- Khi có nhiều hơn một biểu thức được cung cấp trong mệnh đề DISTINCT, truy vấn sẽ truy xuất các kết hợp duy nhất cho các biểu thức được liệt kê
- Trong MySQL, mệnh đề DISTINCT không bỏ qua các giá trị NULL. Vì vậy, khi sử dụng mệnh đề DISTINCT trong câu lệnh SQL của bạn, tập kết quả của bạn sẽ bao gồm NULL dưới dạng giá trị riêng biệt
Ví dụ - Với biểu thức đơn
Hãy xem ví dụ về mệnh đề MySQL DISTINCT đơn giản nhất. Chúng ta có thể sử dụng mệnh đề MySQL DISTINCT để trả về một trường duy nhất loại bỏ các bản sao khỏi tập kết quả
Ví dụ
SELECT DISTINCT state FROM customers;
Ví dụ MySQL DISTINCT này sẽ trả về tất cả các giá trị trạng thái duy nhất từ bảng khách hàng
Ví dụ - Với nhiều biểu thức
Hãy xem cách bạn có thể sử dụng mệnh đề DISTINCT của MySQL để loại bỏ các mục trùng lặp khỏi nhiều trường trong câu lệnh SELECT của bạn
Ví dụ
SELECT DISTINCT city, state FROM customers;
Ví dụ về mệnh đề MySQL DISTINCT này sẽ trả về từng tổ hợp thành phố và tiểu bang duy nhất từ bảng khách hàng. Trong trường hợp này, DISTINCT áp dụng cho từng trường được liệt kê sau từ khóa DISTINCT và do đó trả về các kết hợp riêng biệt
Mệnh đề DISTINCT của MySQL được sử dụng để xóa các bản ghi trùng lặp khỏi bảng và chỉ tìm nạp các bản ghi duy nhất. Mệnh đề DISTINCT chỉ được sử dụng với câu lệnh SELECT
cú pháp
Thông số
biểu thức. chỉ định các cột hoặc phép tính mà bạn muốn truy xuất
những cái bàn. chỉ định tên của các bảng từ nơi bạn truy xuất bản ghi. Phải có ít nhất một bảng được liệt kê trong mệnh đề TỪ
điều kiện NƠI. nó là tùy chọn. Nó chỉ định các điều kiện phải được đáp ứng để các bản ghi được chọn
Ghi chú
- Nếu bạn chỉ đặt một biểu thức trong mệnh đề DISTINCT, thì truy vấn sẽ trả về các giá trị duy nhất cho biểu thức đó
- Nếu bạn đặt nhiều hơn một biểu thức trong mệnh đề DISTINCT, thì truy vấn sẽ truy xuất các kết hợp duy nhất cho các biểu thức được liệt kê
- Trong MySQL, mệnh đề DISTINCT không bỏ qua các giá trị NULL. Vì vậy, nếu bạn đang sử dụng mệnh đề DISTINCT trong câu lệnh SQL của mình, tập kết quả của bạn sẽ bao gồm NULL dưới dạng một giá trị riêng biệt
Mệnh đề DISTINCT của MySQL với một biểu thức
Nếu bạn sử dụng một biểu thức duy nhất thì mệnh đề DISTINCT của MySQL sẽ trả về một trường duy nhất với các bản ghi duy nhất [không có bản ghi trùng lặp]
xem bảng
Sử dụng truy vấn sau
Mệnh đề DISTINCT của MySQL có nhiều biểu thức
Nếu bạn sử dụng nhiều biểu thức với Mệnh đề DISTINCT thì mệnh đề DISTINCT của MySQL sẽ loại bỏ các bản trùng lặp khỏi nhiều trường trong câu lệnh SELECT của bạn
Nếu bạn muốn tìm nạp dữ liệu [bản ghi] mà không có giá trị trùng lặp từ bảng cơ sở dữ liệu thì hãy sử dụng câu lệnh "Chọn riêng biệt"
PHP MySQL Chọn ví dụ câu lệnh riêng biệt
Nếu bạn muốn tìm nạp dữ liệu [bản ghi] mà không có giá trị trùng lặp từ bảng cơ sở dữ liệu thì hãy sử dụng câu lệnh "Chọn riêng biệt". "Select Distinct" được dùng để tìm nạp giá trị khác trong tập hợp bản ghi. Giả sử bảng cơ sở dữ liệu chứa một số giá trị trùng lặp nhưng bạn muốn tìm nạp các bản ghi không có giá trị trùng lặp thì sử dụng "Select Distinct"
cú pháp
CHỌN DISTINCT column_name TỪ tên_bảng
Thí dụ
"; echo "User Email : " . $rows['user_email'] . "
"; } } mysql_close[$connection]; ?>
Bảng người dùng cơ sở dữ liệu là
Trong ví dụ này, chúng tôi đã sử dụng user_name và user_email với câu lệnh "Distinct" nên kết quả sẽ không lặp lại tên người dùng và email
Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng mệnh đề MySQL
1 trong câu lệnhCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
2 để loại bỏ các hàng trùng lặp trong tập kết quảCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Giới thiệu về mệnh đề DISTINCT của MySQL
Khi truy vấn dữ liệu từ một bảng, bạn có thể nhận được các hàng trùng lặp. Để xóa các hàng trùng lặp này, bạn sử dụng mệnh đề
1 trong câu lệnhCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
4Code language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Đây là cú pháp của mệnh đề
1Code language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Code language: SQL [Structured Query Language] [sql]
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 từ khóa
6Code language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Nếu bạn chỉ định một cột, mệnh đề
1 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 đóCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Tuy nhiên, nếu bạn chỉ định hai hoặc nhiều cột, mệnh đề
1 sẽ sử dụng các giá trị của các cột này để đánh giá tính duy nhất của các hàngCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Khi thực hiện câu lệnh
2 với mệnh đềCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
1, MySQL đánh giá mệnh đề
SELECT lastname FROM employees ORDER BY lastname;
Code language: SQL [Structured Query Language] [sql]
1 sau mệnh đềCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
2,Code language: plaintext [plaintext]
+-----------+ | lastname | +-----------+ | Bondur | | Bondur | | Bott | | Bow | | Castillo | | Firrelli | | Firrelli | | Fixter | .... | Jones | | Patterson | | Patterson | | Patterson | | Thompson | ... +-----------+ 23 rows in set [0.00 sec]
3, vàCode language: plaintext [plaintext]
+-----------+ | lastname | +-----------+ | Bondur | | Bondur | | Bott | | Bow | | Castillo | | Firrelli | | Firrelli | | Fixter | .... | Jones | | Patterson | | Patterson | | Patterson | | Thompson | ... +-----------+ 23 rows in set [0.00 sec]
2 và trước mệnh đềCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
5Code language: plaintext [plaintext]
+-----------+ | lastname | +-----------+ | Bondur | | Bondur | | Bott | | Bow | | Castillo | | Firrelli | | Firrelli | | Fixter | .... | Jones | | Patterson | | Patterson | | Patterson | | Thompson | ... +-----------+ 23 rows in set [0.00 sec]
Ví dụ về mệnh đề MySQL DISTINCT
Chúng tôi sẽ sử dụng bảng
6 từ cơ sở dữ liệu mẫuCode language: plaintext [plaintext]
+-----------+ | lastname | +-----------+ | Bondur | | Bondur | | Bott | | Bow | | Castillo | | Firrelli | | Firrelli | | Fixter | .... | Jones | | Patterson | | Patterson | | Patterson | | Thompson | ... +-----------+ 23 rows in set [0.00 sec]
Trước tiên, hãy chọn họ từ bảng
6 bằng cách sử dụng câu lệnhCode language: plaintext [plaintext]
+-----------+ | lastname | +-----------+ | Bondur | | Bondur | | Bott | | Bow | | Castillo | | Firrelli | | Firrelli | | Fixter | .... | Jones | | Patterson | | Patterson | | Patterson | | Thompson | ... +-----------+ 23 rows in set [0.00 sec]
2 sau đâyCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Code language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Code language: plaintext [plaintext]
+-----------+ | lastname | +-----------+ | Bondur | | Bondur | | Bott | | Bow | | Castillo | | Firrelli | | Firrelli | | Fixter | .... | Jones | | Patterson | | Patterson | | Patterson | | Thompson | ... +-----------+ 23 rows in set [0.00 sec]
Như được hiển thị rõ ràng trong đầu ra, một số nhân viên có cùng họ e. g. ,
9Code language: plaintext [plaintext]
+-----------+ | lastname | +-----------+ | Bondur | | Bondur | | Bott | | Bow | | Castillo | | Firrelli | | Firrelli | | Fixter | .... | Jones | | Patterson | | Patterson | | Patterson | | Thompson | ... +-----------+ 23 rows in set [0.00 sec]
Thứ hai, chọn họ duy nhất bằng cách thêm mệnh đề
1 như thế nàyCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Code language: SQL [Structured Query Language] [sql]
SELECT DISTINCT lastname FROM employees ORDER BY lastname;
Như bạn có thể thấy rõ từ đầu ra, mệnh đề
1 loại bỏ các họ trùng lặp khỏi tập kết quảCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Code language: plaintext [plaintext]
+-----------+ | lastname | +-----------+ | Bondur | | Bott | | Bow | | Castillo | | Firrelli | ... | Nishi | | Patterson | | Thompson | | Tseng | | Vanauf | +-----------+ 19 rows in set [0.01 sec]
Các giá trị DISTINCT và NULL của MySQL
Khi bạn chỉ định một cột có giá trị
2 trong mệnh đềCode language: SQL [Structured Query Language] [sql]
SELECT DISTINCT lastname FROM employees ORDER BY lastname;
1, mệnh đềCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
1 sẽ chỉ giữ một giá trịCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
5 vì nó coi tất cả các giá trịCode language: SQL [Structured Query Language] [sql]
SELECT DISTINCT lastname FROM employees ORDER BY lastname;
5 đều giống nhauCode language: SQL [Structured Query Language] [sql]
SELECT DISTINCT lastname FROM employees ORDER BY lastname;
Ví dụ: cột trạng thái trong bảng
7 có giá trịCode language: SQL [Structured Query Language] [sql]
SELECT DISTINCT lastname FROM employees ORDER BY lastname;
5Code language: SQL [Structured Query Language] [sql]
SELECT DISTINCT lastname FROM employees ORDER BY lastname;
Khi bạn sử dụng mệnh đề
1 để 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àCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
5 như sauCode language: SQL [Structured Query Language] [sql]
SELECT DISTINCT lastname FROM employees ORDER BY lastname;
Code language: SQL [Structured Query Language] [sql]
SELECT DISTINCT state FROM customers;
Code language: plaintext [plaintext]
+---------------+ | state | +---------------+ | NULL | | NV | | Victoria | | CA | | NY | | PA | ... | Co. Cork | | Pretoria | | NH | | Tokyo | +---------------+ 19 rows in set [0.00 sec]
MySQL DISTINCT với nhiều cột
Khi bạn chỉ định nhiều cột trong mệnh đề
1, mệnh đềCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
1 sẽ sử dụng 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 trong tập hợp kết quảCode language: SQL [Structured Query Language] [sql]
SELECT lastname FROM employees ORDER BY lastname;
Ví dụ: để có được sự kết hợp duy nhất giữa thành phố và tiểu bang từ bảng
7, bạn sử dụng truy vấn sauCode language: SQL [Structured Query Language] [sql]
SELECT DISTINCT lastname FROM employees ORDER BY lastname;