SQL语句之START WITH CONNECT BY PRIOR 使用方法


START WITH CONNECT BY PRIOR用于组织结构查询、省市查询、多级菜单查询(商城系统),通过父级id查询所有的子级、以及通过当前id查询父级。

基本数据表

以组织结构表为准(),例如:

ID PARENTDEPARTID ORG_TYPE 其它字段
1012 1012A1100001X9TI' 1
1023 1013A1100001X9TI 2
1025 1015A1100001X9TI 1

从父级查询子级(自顶向下)

以ID=‘1012’为根节点,向下查询所属的节点

SELECT *
FROM   T_S_DEPART T2 
START  WITH T2.ID = '1012'
CONNECT BY PRIOR T2.ID = T2.PARENTDEPARTID;

从子级查询父级(自底向上)

以ID = '1012A1100001X9TI’为根据点,向上查找父节点
描述:

SELECT *
FROM   T_S_DEPART T2
START  WITH T2.ID = '1012A11000000001X9TI'
CONNECT BY PRIOR T2.PARENTDEPARTID = T2.ID ORDER BY ID;

添加WHERE条件

--从父级查询子级
SELECT *
FROM   T_S_DEPART T2 WHERE ORG_TYPE = '2'
START  WITH T2.ID = '1012'
CONNECT BY PRIOR T2.ID = T2.PARENTDEPARTID;
--从子级查询父级
SELECT *
FROM   T_S_DEPART T2 WHERE ORG_TYPE = '1'
START  WITH T2.ID = '1012A11000000001X9TI'
CONNECT BY PRIOR T2.PARENTDEPARTID = T2.ID ORDER BY ID;

添加AND条件

--从父级查询子级
SELECT *
FROM   T_S_DEPART T2 
START  WITH T2.ID = '1012'
CONNECT BY PRIOR T2.ID = T2.PARENTDEPARTID AND ORG_TYPE = '2';
--从子级查询父级
SELECT *
FROM   T_S_DEPART T2 
START  WITH T2.ID = '1012A11000000001X9TI'
CONNECT BY PRIOR T2.PARENTDEPARTID = T2.ID ORDER BY ID AND ORG_TYPE = '1';

完。

如果你看到了这里,觉得文章写得不错就给个赞,关注公众号,可订阅更多干货?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢!
公众号:学软件开发就这么简单

发布了19 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lixibang/article/details/83090023