与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)