我们平常使用递归的方式有多种,其中sql语句编写是很普遍高效的一种,下面分享一种自己平常使用的cte递归查询语句,话不多说,上干货!
WITH RECURSIVE cte ( ID, level, parent) AS(
SELECT DISTINCT de.id, 1 AS level, parentid FROM departmentinfo de WHERE de.parentid is null UNION ALL
SELECT d1.id, level + 1, a.id FROM departmentinfo d1, cte a WHERE a.id = d1.parentid
)
SELECT cte.id,cte.level,parent FROM cte
下面为结果实例:
ID | level | parent |
176878 | 1 | null |
254356 | 2 | 176878 |
367644 | 2 | 176878 |
456768 | 3 | 254356 |
543665 | 3 | 254356 |