什么是MySQL子查询中派生表的概念?
实际上,当MySQL子查询从FROM子句开始时,产生的结果集被称为派生表。产生派生表的这种子查询称为材料化子查询。可以用以下使用“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 |
+------+--------------+---------+
8 rows in set (0.02 sec)
现在,以下查询将产生一个派生表 −
mysql> Select AVG(P) FROM(SELECT Name, SUM(Price) P FROM cars GROUP BY Name)AS totals;
+--------------+
| AVG(P) |
+--------------+
| 1612500.0000 |
+--------------+
1 row in set (0.76 sec)
上述派生表返回每辆汽车的总价格,然后外部查询返回平均价格。
我们必须为所有派生表提供别名。在这种情况下,我们给我们的派生表一个名为totals的别名。
如果我们仅运行子查询,我们可以看到该派生表 −
mysql> SELECT Name, SUM(Price) P FROM cars GROUP BY Name ;
+--------------+---------+
| Name | P |
+--------------+---------+
| Alto | 250000 |
| BMW | 4450000 |
| Ford | 1100000 |
| Maruti Swift | 450000 |
| Nexa | 750000 |
| Skoda | 1250000 |
| Toyota | 2400000 |
| VOLVO | 2250000 |
+--------------+---------+
8 rows in set (0.03 sec)
阅读更多:MySQL 教程
极客教程