Tìm hiểu lệnh ANY, ALL trong MySQL


1) Chức năng & cách sử dụng

- Trong hệ quản trị cơ sở dữ liệu MySQL, lệnh ANY & ALL thường được sử dụng kết hợp với các cột & các toán tử để xây dựng nên một cái biểu thức, biểu thức này thường gồm có bốn thành phần chính: tên cột, toán tử so sánh, từ khóa ANY hoặc ALL, một câu lệnh SELECT để trả về một cột dữ liệu.

column
operator
ANY hoặc ALL
(câu lệnh SELECT)
1
2
3
4

✅ Đối với lệnh ANY thì biểu thức column operator ANY (câu lệnh SELECT) sẽ trả về giá trị TRUE nếu cột column có thể kết hợp với ít nhất một giá trị bên trong cột dữ liệu (được trả về từ câu lệnh SELECT) làm cho biểu thức column operator value thỏa điều kiện.

✅ Đối với lệnh ALL thì biểu thức column operator ALL (câu lệnh SELECT) sẽ trả về giá trị TRUE nếu tất cả các lần kết hợp giữa cột column & các giá trị bên trong cột dữ liệu (được trả về từ câu lệnh SELECT) đều làm cho biểu thức column operator value thỏa điều kiện.

- Lưu ý: Operator là các toán tử so sánh, ví dụ như: = > >= < <= != <>

2) Tham khảo một số ví dụ

- Trong bài học này, tôi sẽ sử dụng cái bảng Student như bên dưới để làm một số ví dụ minh họa.

ID Name Gender Age City
1 Nguyễn Thành Nhân Nam 22 Cần Thơ
2 Dương Văn Gánh Nam 19 Sóc Trăng
3 Trần Thanh Trúc Nữ 27 Hải Phòng
4 Châu Tinh Trì Nam 25 Cần Thơ
5 Lê Thị Huỳnh Như Nữ 24 Bạc Liêu
6 Tì Sa Môn Thiên Nam 21 Hậu Giang
7 Doãn Chí Bình Nam 26 Cần Thơ
8 Phạm Thị Thu Hiền Nữ 18 Vĩnh Long
Ví dụ 1:

- Liệt kê những sinh viên có độ tuổi lớn hơn bất kỳ một sinh viên nào sống ở Cần Thơ.

SELECT *
FROM Student
WHERE Age > ANY (SELECT Age FROM Student WHERE City = "Cần Thơ");

- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới:

ID Name Gender Age City
3 Trần Thanh Trúc Nữ 27 Hải Phòng
4 Châu Tinh Trì Nam 25 Cần Thơ
5 Lê Thị Huỳnh Như Nữ 24 Bạc Liêu
7 Doãn Chí Bình Nam 26 Cần Thơ
Ví dụ 2:

- Liệt kê những sinh viên có độ tuổi lớn hơn tất cả các sinh viên sống ở Cần Thơ.

SELECT *
FROM Student
WHERE Age > ALL (SELECT Age FROM Student WHERE City = "Cần Thơ");

- Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như bên dưới:

ID Name Gender Age City
3 Trần Thanh Trúc Nữ 27 Hải Phòng

GIẢI THÍCH VÍ DỤ 1

ID Name Gender Age City
1 Nguyễn Thành Nhân Nam 22 Cần Thơ
2 Dương Văn Gánh Nam 19 Sóc Trăng
3 Trần Thanh Trúc Nữ 27 Hải Phòng
4 Châu Tinh Trì Nam 25 Cần Thơ
5 Lê Thị Huỳnh Như Nữ 24 Bạc Liêu
6 Tì Sa Môn Thiên Nam 21 Hậu Giang
7 Doãn Chí Bình Nam 26 Cần Thơ
8 Phạm Thị Thu Hiền Nữ 18 Vĩnh Long
SELECT *
FROM Student
WHERE Age > ANY (SELECT Age FROM Student WHERE City = "Cần Thơ");

- Trước tiên chúng ta hãy xem sơ qua tuổi của các sinh viên sống tại Cần Thơ thông qua câu lệnh SELECT Age FROM Student WHERE City = "Cần Thơ";

Age
22
25
26

- Trong cái bảng Student:

  • Trần Thanh Trúc 27 tuổi, lớn hơn tất cả các sinh viên sống tại Cần Thơ thỏa điều kiện.
  • Châu Tinh Trì 25 tuổi, lớn hơn Nguyễn Thành Nhân (22 tuổi) sống tại Cần Thơ thỏa điều kiện.
  • Lê Thị Huỳnh Như 24 tuổi, lớn hơn Nguyễn Thành Nhân (22 tuổi) sống tại Cần Thơ thỏa điều kiện.
  • Doãn Chí Bình 26 tuổi, lớn hơn Nguyễn Thành Nhân (22 tuổi) & Châu Tinh Trì (25 tuổi) sống tại Cần Thơ thỏa điều kiện.
  • Những sinh viên còn lại thì không có ai lớn hơn bất kỳ một sinh viên nào sống tại Cần Thơ KHÔNG thỏa điều kiện.
ID Name Gender Age City
3 Trần Thanh Trúc Nữ 27 Hải Phòng
4 Châu Tinh Trì Nam 25 Cần Thơ
5 Lê Thị Huỳnh Như Nữ 24 Bạc Liêu
7 Doãn Chí Bình Nam 26 Cần Thơ

GIẢI THÍCH VÍ DỤ 2

ID Name Gender Age City
1 Nguyễn Thành Nhân Nam 22 Cần Thơ
2 Dương Văn Gánh Nam 19 Sóc Trăng
3 Trần Thanh Trúc Nữ 27 Hải Phòng
4 Châu Tinh Trì Nam 25 Cần Thơ
5 Lê Thị Huỳnh Như Nữ 24 Bạc Liêu
6 Tì Sa Môn Thiên Nam 21 Hậu Giang
7 Doãn Chí Bình Nam 26 Cần Thơ
8 Phạm Thị Thu Hiền Nữ 18 Vĩnh Long
SELECT *
FROM Student
WHERE Age > ALL (SELECT Age FROM Student WHERE City = "Cần Thơ");

- Trước tiên chúng ta hãy xem sơ qua tuổi của các sinh viên sống tại Cần Thơ thông qua câu lệnh SELECT Age FROM Student WHERE City = "Cần Thơ";

Age
22
25
26

- Trong cái bảng Student chỉ có mỗi Trần Thanh Trúc 27 tuổi là lớn hơn tất cả các sinh viên sống tại Cần Thơ.

ID Name Gender Age City
3 Trần Thanh Trúc Nữ 27 Hải Phòng