MySQL 派生表

2024年10月19日 MySQL 派生表 极客笔记

MySQL 派生表

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;

在上面的语句中,派生表计算浮点列的总和,然后从外部查询中返回平均值。请参阅以下输出:

在MySQL中,派生表有以下限制:

  • MySQL不使用关联子查询作为派生表。
  • MySQL不允许派生表使用同一SELECT语句的其他表的引用。
  • 我们不能在派生表中使用外部引用。

本文链接:http://so.lmcjl.com/news/15782/

展开阅读全文
上一篇:MySQL 子查询 下一篇:MySQL UUID