共同表达式
临时命名的结果集。即把查询的结果当作一个结果集然后命令。
它可以包括自己自身的引用,这样的表达式可以称为递归公用表表达式。
它分为两个部分:
- 基本语句
- 递归语句
理论不多说,下面我们看一个例子:
例子
构造一个这样的关系
我们可以构造一个表格:
假设我们现在有这么一个需求:
查找爸爸的子孙和后代:
with CTE as(
select id,parentId,name from family where name='爸爸'
union all
select family.id,family.parentId,family.name from family
join CTE on family.parentId=CTE.id
)
select * from CTE
可以通过上面的语句
先查询到爸爸+我+哥哥,然后递归查询+侄子,然后再递归查询没有内容。