语法:
select … from tablename
start with 条件1
connect by 条件2
where 条件3;
通过这个语句,能查询出树状结构的数据
- 条件1 是起始条件,限定树结构的起始节点
- 条件2 是连接条件,设置递归的条件
- 条件3 是过滤条件,对所有返回的数据进行过滤
行政区划表 xzqh
1、查南京市及以下的地区
select DM, MC, LS from xzqh
start with DM = '320100'
connect by prior DM = LS;
2、查江宁区及父级的地区
select DM, MC, LS from xzqh
start with DM = '320115'
connect by prior LS = DM;
补充说明:
- start with 后的是限定条件,如果这个条件可以查出多个值,会把这些值作为多棵树的根节点,递归查询出多棵数状结构;start with 被省略,表示所有满足查询条件的行作为根节点
- prior 表示上一条记录,connect by prior DM = LS,意思上一条数据的 DM 字段值是下一条数据的 LS 值,南京市的 DM 是各区的 LS,所以例1 查南京市及以下的地区
- 根据 connect by prior 条件查询不到数据,递归结束
- connect by 后面可以包含多个 prior 条件
- prior 在条件2 中的顺序,影响查询方式。prior 在等号前(connect by prior DM = LS),从根节点向叶节点检索;prior 在等号后(connect by DM = prior LS),从叶节点向根节点检索
- where 后面的条件3,可以对树状结构数据进行裁剪,即过滤出自己想要的数据
- 可以增加 order by 排序