一、語法
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