db2資料庫sql語句遍歷一張父子節點相關聯的表,運用CTE

2021-04-02 23:05:20 字數 1687 閱讀 4045

1樓:匿名使用者

create table emp

(idint,

parentid int

)insert into emp values(1      ,     0)

insert into emp values(5      ,     3)

insert into emp values(3      ,     1)

insert into emp values(4      ,     2)

insert into emp values(2      ,     1)

--按id拼個路徑出來,然後按路徑排序即可

--這是mssql的寫法,db2我不知道

--search breadth first by id set sort,估計是按用來產生排序的

with report(parentid,id,level)as(

select parentid,id,convert(varbinary(max),id)

from emp where parentid='0'

union all

select emp.parentid,emp.id,level+convert(varbinary,emp.id)

from report join emp

on emp.parentid=report.id

)select id,parentid from report

order by level

--或者

with report(parentid,id,level)as(

select parentid,id,convert(varchar(max),right('00000'+id,5))

from emp where parentid='0'

union all

select emp.parentid,emp.id,level+'-'+convert(varchar(max),right('00000'+emp.id,5))

from report join emp

on emp.parentid=report.id

)select id,parentid from report

order by level

sql中如何根據每個節點查出它下面的子孫節點(表名:node),請儘量詳細,謝謝

2樓:匿名使用者

-- oracle

select * from node t

start with t.cid = 1

connect by prior t.cid = t.pid

3樓:匿名使用者

沒理解你

的意思--例如節點1的所有子節點

declare @

內id int

set @id=1

;with roy as

(select cid,name,pid from node where cid=@id

union all

select node.cid,node.name,node.pid from node inner join roy on roy.cid=node.pid

)select * from roy

要這個結果?容

db2資料庫修改某個欄位的長度的語句

a.首先記住一個原則 一個 sql 語句只能改變每列的一個屬性 例如,型別或可空性 b.你的錯誤在於 1 varchar 1 和 not null 一起寫。2 set data type varchar 1 寫成了 set data column name varchar 1 c.所以 1 alte...

如何用SQL語句建立資料庫,sql語句 如何建立一個表啊

用如下語句 create database studbon primary 預設就屬於primary檔案組,可省略 資料檔案的具體描述 name studb data 主資料檔案的邏輯名稱filename d studb data.mdf 主資料檔案的物理名稱 size 5mb,主資料檔案的初始大小...

怎樣在C中寫一句SQL語句,判斷資料庫中的日期對比系統當前日期是否過期了

過期的話應該是表裡的時間小於當前時間 select from tablename where time getdate 看看查詢結果就知道了 或者 選擇 from tablename的則datediff d,getdate 到期日期 30如果僅統計30天到期 select from tablenam...