MySQL8.0新特性CTE(Common Table Expression)
CTE(Common Table Expression)可以认为是派生表(derived table)的替代,在一定程度上,CTE简化了复杂的join查询和子查询,提高了SQL的可读性和执行性能。CTE是ANSI SQL 99标准的一部分,在MySQL 8.0.1版本被引入。
1. CTE优势
- 查询语句的可读性更好
- 在一个查询中,可以被引用多次
- 能够链接多个CTE
- 能够创建递归查询
- 能够提高SQL执行性能
- 能够有效地替代视图
2. 如何创建和使用CTE
CTE类似于使用子查询时的派生表,但是CTE的定义不在SQL主体中,而是提到SQL最前端,声明CTE的需要使用语法WITH。
2.1 CTE的使用
先看一个派生表实现的例子:
mysql> SELECT Name, Population FROM (SELECT * FROM country WHERE continent='Europe') AS derived_t ORDER BY Population DESC LIMIT 5;