640.gif

作者:阿里云数据库产品事业部

高级技术专家 印风

前言

CTE也就是common table s,是SQL标准里的语法,很多数据库都能够支持,MySQL也在8.0版本里加入了CTE功能。本文主要简单的介绍下该语法的用法,由于笔者对server层了解不深,本文不探讨代码层。

CTE与derived table最大的不同之处是

可以自引用,递归使用(recursive cte

在语句级别生成独立的临时表. 多次调用只会执行一次

一个cte可以引用另外一个cte

一个CTE语句其实和CREATE [TEMPORARY] TABLE类似,但不需要显式的创建或删除,也不需要创建表的权限。更准确的说,CTE更像是一个临时的VIEW

示例

语法:

with_clause:    WITH [RECURSIVE]        cte_name
收藏 打印