SQL Server 2005使用關(guān)系數(shù)據(jù)庫存儲CFG的信息
本文主要向大家介紹的是用SQL Server 2005使用關(guān)系數(shù)據(jù)庫存儲CFG(控制流程圖)的信息。在查詢時,我們?yōu)榱艘玫剿衐ominate關(guān)系的相關(guān)結(jié)果,我們使用了CTE來進行遞歸查詢。SQL Server 2005使用關(guān)系數(shù)據(jù)庫存儲CFG簡單例子如下:
1. 現(xiàn)有表testRe結(jié)構(gòu)如下
2. 欲得到的查詢結(jié)果為找到id=’a'的項的所有pId,即b、c、d。
3. 使用CTE做遞歸查詢:
- WITH Re_CTE(id, pId, Level)
- Technorati 標(biāo)簽: sql server,CTE,遞歸,查詢
- AS
- (
- SELECT id, pId, 1 AS [Level]
- FROM testRe
- WHERE id=’a’
- UNION ALL
- SELECT t.id, t.pId, [Level] + 1
- FROM testRe t INNER JOIN Re_CTE ct
- ON t.id=ct.pId
- )
- SELECT * FROM Re_CTE
其中,Level為可選項
4. SQL Server 2005使用關(guān)系數(shù)據(jù)庫存儲CFG,查詢結(jié)果為:
5. CTE的簡單說明(參考MSDNhttp://msdn.microsoft.com/zh-cn/library/ms186243%28SQL.90%29.ASPx):
- WITH cte_name(column_name [,...n])
- AS
- (
- CTE_query_definition –- Anchor member is defined.
- UNION ALL
- CTE_query_definition –- Recursive member is defined referencing cte_name.
- )
- – Statement using the CTE
- SELECT *
- FROM cte_name
一個遞歸 CTE 結(jié)構(gòu)必須至少包含一個定位點成員和一個遞歸成員。
執(zhí)行時:
將 CTE 表達式拆分為定位點成員和遞歸成員。
運行定位點成員,創(chuàng)建第一個調(diào)用或基準(zhǔn)結(jié)果集 (T0)。
運行遞歸成員,將 Ti 作為輸入,將 Ti+1 作為輸出。
重復(fù)步驟 3,直到返回空集。
返回結(jié)果集。這是對 T0 到 Tn 執(zhí)行 UNION ALL 的結(jié)果。
上述的相關(guān)內(nèi)容就是對SQL Server 2005使用關(guān)系數(shù)據(jù)庫存儲CFG的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】