sql的一种for循环,只有高版本的mysql或mariadb中才会存在的语法
eg:
WITH recursive cte as (
SELECT * FROM shiro_permission_block WHERE id = 3
union all
SELECT shiro_permission_block.* FROM shiro_permission_block,cte WHERE cte.id=shiro_permission_block.parentId
)
SELECT * FROM cte
上述 sql 的最终得到的接口是:
我们可以看到,这是一个List结构的tree。
下面一条数据的parentId对应的往往是上一条数据的id
如果需要想要一条sql遍历出一个树时,cte语句是一个绝佳的选择,
list结构的树可以通过util转化为纯tree结构并返回。