您的位置:首页 > 数据库 > Oracle

Oracle中START WITH...CONNECT BY PRIOR用法

2018-02-10 14:05 591 查看
通常,在查询树形结构的数据时,需要使用START WITH...CONNECT BY PRIOR的方式查询。
START WITH...CONNECT BY PRIOR的语法为:SELECT 字段
FROM 表名
WHERE 条件1
START WITH 条件2
CONNECT BY PRIOR 条件3条件1:过滤条件
条件2:起始的查询条件,指定根节点
条件3:指定父节点和子节点直接的关系,PRIOR指定父节点

假设现有部门表DEPARTMENT,部门表中字段包括DEPID(部门ID),PARENTDEPID(父部门ID),DEPNAME(部门名称)
1、我们要查询部门ID="1110"的部门的所有父部门的ID和名称(包含部门ID="1110"的部门,不包含可通过WHERE条件过滤)
SELECT DEPID, DEPNAME
FROM FW_DEPARTMENT
--WHERE DEPID <> '1110'
START WITH DEPID = '1110'
CONNECT BY PRIOR PARENTDEPID = DEPID
2、我们要查询部门ID="1110"的部门的所有子部门的ID和名称(包含部门ID="1110"的部门,不包含可通过WHERE条件过滤)SELECT DEPID, DEPNAME
FROM FW_DEPARTMENT
--WHERE DEPID <> '1110'
START WITH DEPID = '1110'
CONNECT BY PRIOR DEPID = PARENTDEPID从上面2个sql我们可以发现:
查询当前节点的所有子节点时,需要将PRIOR放在子节点左侧
查询当前节点的所有父节点时,需要将PRIOR放在父节点左侧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: