MySQL中的派生表是从SELECT…FROM语句返回的 虚拟表 。换句话说,它是一个表达式,在SELECT语句的FROM子句范围内生成一个表。这个概念类似于临时表。然而,派生表比临时表更简单,因为它的创建不需要使用临时表所需的所有步骤。
大多数开发人员将派生表和子查询互换使用。因此,当我们在SELECT…FROM子句中使用 子查询 时,称之为派生表。
下面是在 MySQL 中使用派生表的语法:
SELECT ... FROM (subquery) [AS] table_name (column_list) WHERE condition;
请注意,独立子查询是一个子查询,可以独立于包含此查询的语句之外执行。
我们还应该考虑到,派生表必须包含别名表名,这样我们可以在语句中稍后引用它的名称。如果我们不为派生表提供别名,则MySQL将发布以下错误消息:
另外,每个派生表的每个列都必须具有唯一名称。让我们通过以下插图来理解。
首先,我们将使用以下语句创建一个表:
mysql> CREATE TABLE test1 (s1 INT, s2 CHAR(5), s3 FLOAT);
接下来,使用下面的语句将一些记录填充到这个表中:
mysql> INSERT INTO test1 VALUES (1, 'A', 10.0), (2, 'B', 20.0), (3, 'C', 30.0);
执行 SELECT语句 以验证输出结果:
现在,执行下述语句以了解如何在 FROM子句中使用子查询 :
SELECT sb1, sb2, sb3
FROM (SELECT s1 AS sb1, s2 AS sb2, s3*5 AS sb3 FROM test1) AS test1_set
WHERE sb1 < 4;
它将返回以下输出:
让我们来看一个例子,我们将获得浮点值列的平均值。执行以下语句:
SELECT AVG(sum_float)
FROM (SELECT SUM(s3) AS sum_float FROM test1 GROUP BY s1) AS totals;
在上面的语句中,派生表计算浮点列的总和,然后从外部查询中返回平均值。请参阅以下输出:
本文链接:http://so.lmcjl.com/news/15782/