一、语法
SQL1: select * from goods_type connect by prior id = parent_id start with id = 213;
SQL2: select * from goods_type connect by prior id = parent_id
and name like '%皮革%' start with id = 213;
SQL3: select * from goods_type where name like '%皮革%'
connect by prior id = parent_id start with id = 213;
SQL4: select * from goods_type connect by prior id = parent_id start with id = 1 and name like '%口%'
结果:
sql1: 查出 id为213 及 其子记录(所有)
sql2: 先过滤 再 查询(每层的查询都去过滤,只保留符合条件的子分支)
sql3: 先查询 再 过滤(全部查完之后,对整个结果集过滤)
sql4: 对起始条件的一个过滤,即从 id为1 name又包含 口的 记录开始查起
二、理解
以上面的例子为例
(1)先查出select id from organ where id = 1(即start with 的条件),查出来的结果作为第一条数据。
(2) 再看connect by ,现在是prior id = parentid,即上一条的id 是下一条的parentid,
那么这个查出来的就是 id=1的所有孩子以及它自身
如果要查 id= 1的父辈, 那么就应该是 第一条的parentid 是下一条的id,即 prior parentid = id