从版本8.0开始,MySQL简单地引入了公用表表达式功能或CTE。
用于单词定义多次引用使用。

语法如下所示,其中需要注意的是

  1. 定义后,必须下方接着使用,不然语法错误。
  2. 同一个语句可以定义多个CTE
with 别名 as (SQL语句),
with 别名2 as (SQL语句)
SELECT/DELETE/UPDATE/INSERT子句

例子:

with cte as (select *
             from t_window_func)
select dept, count(*)
from cte
where salary not in (select salary from cte where salary < 13000)
group by dept;

以上语句的外层from cte和内层not in中多次引用了cte这个”公用表“