什么是MySQL子查询中派生表的概念?

什么是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 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程