MySQL 如何使用包含外部查询中也出现的表的子查询?
包含外部查询中也出现的表的子查询称为相关子查询。在这种情况下,MySQL从内部查询到外部查询进行评估。为了理解它,我们从表“汽车”中提取以下数据 –
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)
以下是两个包含引用外部查询中也出现的表“Cars”的子查询的MySQL查询。
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 AVG(Price) from Cars”,然后计算外部查询“Select Name from Cars where Price <”。类似地,MySQL也可以计算以下查询。
mysql> Select Name from cars WHERE Price > (SELECT AVG(Price) from Cars);
+--------+
| Name |
+--------+
| BMW |
| VOLVO |
| Toyota |
+--------+
3 rows in set (0.00 sec)
阅读更多:MySQL 教程
极客教程