多级查询在关于人事管理,如人员和部门、分公司关系,地区管理如:省、辖区、市、县里面用到。当点开某一级,如何展开该级下所有数据。这种多层级查找,百度资料基本千篇一律,往往仅适用某一数据库,如CTE仅适合sql server。几番google,梳理各数据库解决问题思路如下:
Oracle:
使用 CONNECT BY
Sql Server:
使用Common Table Expression (CTE)
【例如】:
部门表:id,name,parent_id
选择某一部门时,该部门下所有子部门、子子部门全部遍历出来。
with cte_child(id,name,parent_id) as (select id,name,parent_id from organization where id=50 union all select a.id,a.name,a.parent_id from organization a
inner join cte_child b on ( a.parent_id=b.id)) select * from cte_child;
mysql:
比较费劲,参考链接如下:
https://dba.stackexchange.com/questions/30021/mysql-tree-hierarchical-query