从版本8.0开始,MySQL简单地引入了公用表表达式功能或CTE。
用于单词定义多次引用使用。
语法如下所示,其中需要注意的是
- 定义后,必须下方接着使用,不然语法错误。
- 同一个语句可以定义多个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
这个”公用表“