递归层级查询
使用递归WITH子句进行SQL查询时遇到的问题,即必须为子句指定列别名列表。通过在WITH语句后添加列别名`(id,name,parent_id)`,可以修正这个错误并成功执行查询。示例展示了如何修改查询语句以避免此类错误,从而正确地从DEPARTMENT表中获取数据。
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