MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
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语句以验证输出:
MySQL Derived Table
现在,执行以下语句以了解如何在 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;
它将返回如下输出:
MySQL派生表
让我们另一个例如,我们将获得 浮动值列的平均值。执行以下语句:
SELECT AVG(sum_float)
  FROM (SELECT SUM(s3) AS sum_float FROM test1 GROUP BY s1) AS totals;
在上面的语句中,派生表计算浮点列的总和,然后从外部查询返回平均值。参见以下输出:
MySQL派生表

MySQL派生表具有以下限制:

MySQL不会将相关子查询用作派生表。 MySQL不允许派生表使用对同一SELECT语句的其他表的引用。 我们不能在派生表中使用外部引用。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4