Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào chúng ta có thể sử dụng truy vấn con có chứa tham chiếu đến bảng cũng xuất hiện trong truy vấn bên ngoài?


Truy vấn con chứa tham chiếu đến bảng cũng xuất hiện trong truy vấn bên ngoài được gọi là truy vấn con tương quan. Trong trường hợp này, MySQL đánh giá từ truy vấn bên trong đến truy vấn bên ngoài. Để hiểu nó, chúng tôi có dữ liệu sau từ bảng "ô tô" -

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 |
+------+--------------+---------+
8 rows in set (0.02 sec)

Tiếp theo là hai truy vấn MySQL có truy vấn con chứa tham chiếu đến bảng, tức là 'Ô tô' cũng xuất hiện trong truy vấn bê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)

Trong truy vấn trên, MySQL đánh giá từ truy vấn bên trong, tức là trước tiên nó đánh giá ‘Chọn AVG (Giá) từ Ô tô’ cho truy vấn bên trong và sau đó đánh giá truy vấn bên ngoài ‘Chọn Tên từ Ô tô ở đâu Giá <’. Tương tự, MySQL đánh giá trong truy vấn bên dưới.

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