在sql中使用遞迴查詢部門的全路徑

2021-10-10 20:08:41 字數 997 閱讀 8235

select reverse(sys_connect_by_path(reverse(unit_name),'/'))

from "unit"

where unit_id ='根節點的unit_id'

start with unit_id = '當前節點的unit_id'

connect by unit_id = prior superior_unit_id

結果為  阿里巴巴/運營部/行政處/

當我們要查詢所有人的類似上述結果樣式的詳細組織情況的時候

只需要將人員表與組織表相關聯,然後在select中加入此select查詢結果作為組織名稱即可

類似

select

pi.uuid ,

pi.name ,

pi.*** ,

(select reverse(sys_connect_by_path(reverse(unit_name),'/'))

from "unit"

where unit_id ='根節點的unit_id'

start with unit_id = '當前節點的unit_id'

connect by unit_id = prior superior_unit_id) as unit_name,

pu.superior_unit_name,

pu.unit_name pname,

pu.superior_unit_id,

pi.post_job ,

pi.order_num,

pi.unit_id,

pi.user_id

from

user pi

left join

unit pu on pi.unit_id=pu.unit_id

where

pu.invalid='0'

and pi.invalid='0'

在django中使用sql語句查詢

django中提供了乙個raw 方法來使用sql語句進行查詢 class person models.model first name models.charfield max length 50 last name models.charfield max length 50 birth date...

在SQL查詢中使用LIKE來代替IN

在sql查詢中根據已知id的集合來查詢結果我們通常會用到in,直接在in後面給出id的集合或是在in後面跟乙個子查詢。如下 select from orders where orderguid in bc71d821 9e25 47da bf5e 009822a3fc1d f2212304 51d4...

在SQL查詢中使用LIKE來代替IN

在sql查詢中根據已知id的集合來查詢結果我們通常會用到in,直接在in後面給出id的集合或是在in後面跟乙個子查詢。如下 select from orders where orderguid in bc71d821 9e25 47da bf5e 009822a3fc1d f2212304 51d4...