-
它是基於子節點來查詢根節點下的祖父節點,通常我會使用該函式。
create function [dbo].[getunderrootparent]
id int)
returns int
declare @aid
從 id=@id 的表中選擇 @aid=parentid
if @aid is null
return null
elseif @aid=1
return @id
else return
您可以在 SQL 中呼叫該函式來獲取目標 ID 號。
-
使用標準的 SQL WITH 實現遞迴查詢(sql2005 或更高版本肯定支援,sql2000 不清楚是否支援):
with subqry(id,name,pid) as (select id,name,pid from test1 where id = 5
union all
select ,,from test1,subqrywhere =
select * from subqry;
-
你的表的結構是什麼樣的,它是否包含兩個字段,子節點和父節點?
-
Oracle 中的 select 語句可用於從...開始。Connect by Prior 子句實現遞迴查詢,結構化查詢中使用 Connect By 的基本語法:
select * from tablename start with cond1
connect by prior cond2
where cond3;
簡單來說,樹結構儲存在乙個表中,例如,乙個表中有兩個字段
id,parentid。然後,通過指示每個記錄的父級是誰,可以形成樹結構。
使用上述語法的查詢可以獲取樹的所有記錄。
cond1 是根節點的限定符,當然限定符可以放寬,得到多個根節點,其實就是多棵樹。
cond2 是連線條件,其中上一條記錄用 Prior 表示,例如,Connect by Prior id=praentid 表示上一條記錄的 ID 是這條記錄的 Praentid,即這條記錄的父親是上一條記錄。
cond3 是乙個篩選條件,用於篩選返回的所有記錄。
-
在 oracle 中,有一種稱為分層查詢的查詢型別,可以執行您所說的查詢。
select * from table start with id=start node connectionby prior id=parentid;
你可以嘗試一下,你可以線上學習特定的語法。
-
是直接詞節點還是包含子節點的詞節點..?
第二天留存? add_months(to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd'),-2) >>>More