MySQL派生表

Posted 面具下的戏命师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL派生表相关的知识,希望对你有一定的参考价值。

MySQL派生表

派生表是查询结果组成的虚拟表。派生表是在外部查询的FROM子句中定义的,不需要手动创建。只要外部查询一结束,派生表也就不存在了。派生表可以简化查询,避免使用临时表。相比手动生成临时表性能更优越。
例如:
SELECT
    * 
FROM
    ( SELECT * FROM t1 ) tmp

如上所示,temp就是派生表。需要注意的是,mysql派生表必须有别名。这与其他数据库不同,例如oracle数据库就不需要别名。如果没有别名,MySQL会报错

ERROR 1248 (42000): Every derived table must have its own alias

派生出来的表必须是一个有效的表,它有如下特征:

1、所有列必须要有名称,出现无列名的要重命名

2、列名称必须是要唯一,相同名称肯定是不允许的

3、不允许使用ORDER BY(除非指定了TOP)

 

以上是关于MySQL派生表的主要内容,如果未能解决你的问题,请参考以下文章

MySQL派生表

错误代码:1248。每个派生表都必须有自己的别名 没有找到查询的解决方案

MySQL - 添加多个派生表时查询慢 - 优化

MySQL的SQL语句 - 数据操作语句(13)- 子查询(10)

EXPLAIN sql优化方法DERIVED

MySQL 子查询 派生表子查询错误