我有一个基本上看起来像这样的数据库:
id uniqueidentifier NOT NULL
data nvarchar
nextid uniqueidentifier NULL
Run Code Online (Sandbox Code Playgroud)
这是一个链接列表,因为每个nextid链接到该表中的id,除了最后一个,这里nextid为NULL.我知道第一个节点的id.
我想以正确的顺序选择它们,给出一个起始ID.
有没有办法可以在T-SQL (编辑:SQL 2008)或LINQ中完成?
我知道我可以编写代码在C#中手动执行,只是想知道我是否可以按顺序查询?
不确定[SortOrder]有什么不同,因为我没有足够的数据来测试它.它允许您在两个方向上排序.
with cteList as
(
select id, data, nextid, 1 as [SortOrder]
from #TableTemp
where id = 'E8ADAA52-54F8-4FE3-BE59-9852E52B33F5' --id of the 1st item
union all
select #TableTemp.id, #TableTemp.data, #TableTemp.nextid, (cteList.[SortOrder] + 1) as [SortOrder]
from #TableTemp
join cteList on #TableTemp.id = cteList.nextid
)
select * from cteList
order by [SortOrder] asc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |