我有一个包含层次结构数据的表:
ID Name ParentID
--- --------- ---------
1 Alpha 2
2 Beta 3
3 Gamma NULL
4 Delta 2
5 Epsilon 6
6 Zeta NULL
7 Eta 1
8 Theta NULL
给定一个 ID 列表,我如何获得所有唯一根父 ID 的列表?我不想要中间父母。
例如,假设给我的 ID 列表是1, 2, 3, 4, 5
. 我正在寻找的结果是:
ID
---
3
6
显然,这需要某种递归查询。我认为使用公用表表达式 (CTE) 可能可以实现,但我真的很难理解它是如何完成的。到目前为止,我看到的所有示例似乎都将所有孩子和父母聚集在一起以产生完整的层次结构列表,这不是我想要的。是否有任何 SQL 专家可以帮助我朝着正确的方向发展?我确实意识到我可以通过对数据库的多个查询来迭代地执行此操作,但我希望不必诉诸于此。
我应该注意我使用的是 SQL Server 2008。