Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách dùng subquery tham chiếu bảng cũng xuất hiện trong truy vấn ngoài (Correlated Subquery)


Subquery chứa tham chiếu đến bảng cũng xuất hiện trong truy vấn ngoài gọi là Correlated Subquery (truy vấn con tương quan). MySQL đánh giá từ truy vấn trong ra truy vấn ngoài.

Ví dụ

Dữ liệu từ bảng cars:

mysql> Select * from Cars;
+------+--------------+---------+
| ID   | Name         | Price   |
+------+--------------+---------+
|    1 | Nexa         |  750000 |
|    2 | Maruti Swift |  450000 |
|    3 | BMW          | 4450000 |
|    4 | VOLVO        | 2250000 |
|    5 | Alto         |  250000 |
|    6 | Skoda        | 1250000 |
|    7 | Toyota       | 2400000 |
|    8 | Ford         | 1100000 |
+------+--------------+---------+

Hai truy vấn có subquery tham chiếu bảng Cars cũng xuất hiện ở ngoài:

mysql> Select Name from cars WHERE Price < (SELECT AVG(Price) from Cars);
+--------------+
| Name         |
+--------------+
| Nexa         |
| Maruti Swift |
| Alto         |
| Skoda        |
| Ford         |
+--------------+
5 rows in set (0.00 sec)

mysql> Select Name from cars WHERE Price > (SELECT AVG(Price) from Cars);
+--------+
| Name   |
+--------+
| BMW    |
| VOLVO  |
| Toyota |
+--------+
3 rows in set (0.00 sec)

Cơ chế: MySQL đánh giá từ trong ra ngoài: trước tiên tính SELECT AVG(Price) from Cars (trung bình giá), sau đó so sánh Price của từng hàng với giá trị trung bình đó. Đây là đặc điểm của correlated subquery - subquery phụ thuộc vào truy vấn ngoài.