2016-06-21 79 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

相关问题