7.2 派生表

在本教程中,您将了解和学习MySQL派生表以及如何简化复杂查询。

1. MySQL派生表介绍

派生表是从SELECT语句返回的虚拟表。派生表类似于临时表,但是在SELECT语句中使用派生表比临时表简单得多,因为它不需要创建临时表的步骤。

术语:*派生表*和子查询通常可互换使用。当SELECT语句的FROM子句中使用独立子查询时,我们将其称为派生表。

以下说明了使用派生表的查询:

img

请注意,独立子查询是一个子查询,可独立于包含该语句的执行语句。

与子查询不同,派生表必须具有别名,以便稍后在查询中引用其名称。 如果派生表没有别名,MySQL将发出以下错误:

以下说明了使用派生表的SQL语句:

2. 简单的MySQL派生表示例

以下查询从示例数据库(yiibaidb)中的orders表和orderdetails表中获得2013年销售收入最高的前5名产品:

img

参考以下查询语句 -

执行上面查询语句,得到以下结果 -

您可以使用此查询的结果作为派生表,并将其与products表相关联,products表的结构如下所示:

参考以下查询语句 -

执行上面查询语句,得到以下结果 -

在上面这个例子中:

  • 首先,执行子查询来创建一个结果集或派生表。

  • 然后,在productCode列上使用products表连接top5product2013派生表的外部查询。

3. 一个更复杂的MySQL派生表示例

假设必须将2013年的客户分为3组:铂金,白金和白银。 此外,需要了解每个组中的客户数量,具体情况如下:

  • 订单总额大于100000的为铂金客户;

  • 订单总额为10000100000的为黄金客户

  • 订单总额为小于10000的为银牌客户

要构建此查询,首先,您需要使用CASE表达式和GROUP BY子句将每个客户放入相应的分组中,如下所示:

以下是查询的输出:

然后,可以使用此查询作为派生表,并按如下所示进行分组:

执行上面查询语句,得到以下结果 -

在本教程中,您已经学会了如何使用FROM子句中的子查询作为MySQL派生表来简化复杂查询。

Last updated

Was this helpful?