sql 递归查询with as语句

前提:

(表名称为operate_permission

即,有id为主键,parent_id为父级的id

/***************以下字段可以根据需求变更,但是必须要对应起来***********/

1.查询所有子级数据

1.1.语句子级数据

SQL语句如下:

 WITH  recursive cte as
		(
		select a.id,a.parent_id from operate_permission a where a.parent_id='1'
		union all
		select m.id, m.parent_id from  operate_permission m INNER JOIN cte c ON c.id = m.parent_id
		)
		select id,parent_id from cte t;

1.2.结果:

2.查询自身以及父级数据

2.1表结构不变,代码如下

 WITH  recursive cte as
		(
		select a.id,a.parent_id from operate_permission a where a.id='4'
		union all
		select m.id, m.parent_id from  operate_permission m INNER JOIN cte c ON m.id = c.parent_id
		)
		select id,parent_id from cte t;

2.2结果如下:

3.查询自身以及所有子集数据

3.1语句

 WITH  recursive cte as
		(
		select a.id,a.parent_id from operate_permission a where a.id='1'
		union all
		select m.id, m.parent_id from  operate_permission m INNER JOIN cte c ON c.id = m.parent_id
		)
		select id,parent_id from cte t;

3.2结果

剩下一个查询父级所有数据,类似就不写了

发布了115 篇原创文章 · 获赞 58 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/luChenH/article/details/103574506