SQL 高階查詢 (層次化查詢,遞迴)

2021-10-23 03:59:56 字數 954 閱讀 4598

遞迴會用到 with 語句。普通的 with 語句可以看作乙個子查詢,我們在 with 外部可以直接使用這個子查詢的內容。

當遞迴查詢時,我們是在 with 語句內部來引用這個子查詢。還是上面的例子,我們使用 with 語句來查詢。

with

temp_product (product_level, id, parent_product_id,name)as(

select

0as product_level,id,parent_product_id,name

from

product

where

parent_product_id is

null

union

allselect

tp.product_level +

1,p.id,

p.parent_product_id,

p.name

from

product p

join temp_product tp

onp.parent_product_id=tp.id

)select

product_level,

id,parent_product_id,

lpad(

' ',

2* product_level)

|| name as name

from

temp_product

深度優先搜尋查詢

search depth first

by id

set order_by_id

廣度優先使用的是下面的 sql 語句

search breadth first

by id

set order_by_id

SQL 高階查詢(層次化查詢,遞迴)

層次化結構可以理解為樹狀資料結構,由節點構成。比如常見的組織結構由乙個總經理,多個副總經理,多個部門部長組成。再比如在生產製造中一件產品會有多個子零件組成。舉個簡單的例子,如下圖所示 汽車作為根節點,下面包含發動機和車身兩個子節點,而子節點又是由其他葉節點構成。葉節點表示沒有子節點的節點 假如我們要...

oracle 層次化查詢

1 層次化查詢 層次化 同一資料庫表中多條資料存在父子關係,形成樹狀結構。利用connect by 進行層次化查詢 按照某種規則,獲得節點路徑上的節點集合。如 select from market b start with b m id 10 b connect by prior b p id m ...

Oracle 層次化查詢

create table employees employee id integer constraint employees pk primary key,manager id integer constraint employees fk employees references employe...