在使用这种写法查询时出现递归 WITH 子句必须具有列别名列表错误;
WITH TREE
AS(
SELECT id, name, parent_id FROM DEPARTMENT WHERE id='-1'
UNION ALL
SELECT U.id, U.name, U.parent_id
FROM DEPARTMENT U INNER JOIN TREE ON U.id=TREE.parent_id
)
SELECT * FROM TREE
在 TREE后加上(id, name, parent_id)发现能够正确查询出结果,可修改为下面这种写法。
WITH TREE(id, name, parent_id)
AS(
SELECT id, name, parent_id FROM DEPARTMENT WHERE id='-1'
UNION ALL
SELECT U.id, U.name, U.parent_id
FROM DEPARTMENT U INNER JOIN TREE ON U.id=TREE.parent_id
)
SELECT * FROM TREE