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結構並返回。