【发布时间】:2015-01-29 14:41:29
【问题描述】:
我目前正在对 Android SQLite 数据库进行递归查询。我有一个包含资产的表,它可以通过引用父级来形成层次结构。例如:
AssetId | ParentAssetId 1--2--5
----------------------- | |
1 | NULL | |--6--8
2 | 1 | | |
3 | 1 | | |--9
4 | 1 | |
5 | 2 | |--7
6 | 2 |
7 | 2 |--3
8 | 6 |
9 | 6 |--4--10
10 | 4
我需要找到给定起点的所有后代,但不包括起点。例如:
1 = 2,3,4,5,6,7,8,9,10
2 = 5,6,7,8,9
6 = 8,9
我使用 SQLite 页面中的示例成功地完成了这项工作:
WITH RECURSIVE
Child(AssetId) AS (
VALUES (1)
UNION
SELECT Assets.AssetId FROM Assets, Child
WHERE Assets.ParentAssetID = Child.AssetId)
SELECT AssetId FROM Child WHERE AssetId != 1
这可行,但我对最后的 WHERE 子句过滤掉原始项目不满意。有没有其他方法可以在不包括原始项目的情况下启动级联?
【问题讨论】:
标签: android sqlite recursion common-table-expression