2016-06-21 81 views
-1

我有下面的表格。如何在沒有遞歸的情況下選擇父子'第'記錄?

id |  name  | parent_id 
----+--------------+----------- 
    1 | Cat   |   
    2 | Fun   |   1 
    3 | LOLCs  |   2 
    4 | Anid   |   2 
    5 | Cla   |   1 
    6 | Rena   |   5 

................................. 
Up to 'N' th Level 

我想選擇父子nth記錄,而不在SQL遞歸。

有人可以提供一些關於如何做到這一點的指導嗎?

+1

爲什麼不遞歸?那麼你是否考慮使用'for循環'? –

+0

如果你的數據庫管理系統不支持遞歸查詢或循環,並且級數很少,那麼經典的解決方案就是在每個級別上增加另一個「leftlevel.id = prevlevel.parent_id」的左連接。 – dnoeth

+0

如果可以像這種類型的方式................ SELECT L0。* FROM test L0 JOIN測試L1 ON L0.Parent_Id = L1.Id JOIN測試L2 ON L1 .ID = L2.Parent_Id WHERE L1.id = '1' UNION所有 SELECT L1 * FROM測試L0 JOIN測試L1 ON L0.Id = L1.Parent_Id JOIN測試L2 ON L1.MnuId = L2 .ParentId JOIN測試L3 ON L2.Parent_Id = L3.Id WHERE L1.Parent_Id = 1' – user6479492

回答

0

嗨,你可以嘗試下面的查詢將連接表的所有列。

select COLUMN_NAME +'+ ''|'' ' from INFORMATION_SCHEMA.COLUMNS 

在表格名= 'your_table_name' 的XML路徑( '')

+0

這絕對與問題無關 – dnoeth

0

如果你想'第N' lavel你必須使用遞歸查詢,沒有其他選項可用。供參考Recursive

相關問題