我有这个表命名为以下列和行的项目。
id item_name parentId
--------------------------
1 Item 1 0
2 Item 2 1
3 Item 3 2
4 Item 4 1
5 Item 5 2
6 Item 6 3
7 Item 7 6
8 Item 8 7
我可以通过递归 CTE 测量父行的级别,但我仍然需要以这种格式获取路径:1.1.1、1.2.1 ...这是我当前的查询:
with recursive items_cache (lvl, id, item_name, parent_id) as (
select 0 as lvl, id, item_name, parent_id
from items
where parent_id = 0
union all
select items_cache.lvl + 1, items.id, items.item_name, items.parent_id
from items_cache
join items on items_cache.id = items.parent_id
order by items_cache.lvl+1 desc, items.id
)
select
lvl,
*
from items_cache
期望的结果:
id item_name parentId lvl path_index
-------------------------------------------------
1 Item 1 0 0 1
2 Item 2 1 1 1.1
3 Item 3 2 2 1.1.1
6 Item 6 3 3 1.1.1.1
7 Item 7 6 4 1.1.1.1.1
8 Item 8 7 5 1.1.1.1.1.1
5 Item 5 2 2 1.1.2
4 Item 4 1 1 1.2
9 Item 9 0 0 2
我怎样才能在 SQLite 中做到这一点?android运行的SQLite版本是3.21,所以不支持窗口函数。