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;