与MySQL子查询有关的派生表的概念是什么?

实际上,当MySQL子查询从FROM子句开始时,生成的结果集称为派生表。这种产生派生表的子查询称为物化子查询。在以下示例的帮助下可以理解,该示例使用“汽车”表中的数据-

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)

现在,以下查询将生成派生表-

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)

上面的表格返回每辆车的总价,然后外部查询返回平均值。

我们必须为所有派生表提供别名。在这种情况下,我们给派生表一个总计的别名。

如果仅运行子查询,则可以看到派生表-

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)