【发布时间】:2021-09-21 08:46:54
【问题描述】:
我正在使用 android SQLite 数据库,结果如下:
id | root_id | parent_id |name
----------------------------------
613 | null | null | m1
612 | null | null | m4
570 | null | null | m1
635 | 570 | 570 | m6
653 | 570 | 635 | m1
652 | 570 | 635 | m3
632 | 570 | 570 | m9
392 | null | null | m2
753 | 392 | 392 | m5
751 | 392 | 392 | m4
391 | null | null | m7
我通过下面的查询得到这个结果:
WITH RECURSIVE all_employees(id, root_id, parent_id, name) AS (
SELECT id, id AS root_id, parent_id, name FROM employees WHERE parent_id IS NULL
UNION ALL
SELECT c.id, (CASE WHEN c.parent_id IS NOT NULL THEN p.root_id END), c.parent_id, c.name FROM employees c JOIN all_employees p ON p.id = c.parent_id ORDER BY id DESC
)
SELECT id, (CASE WHEN id != root_id THEN root_id ELSE NULL END) root_id, parent_id, name FROM all_employees
我想为具有相同 root_id 的重复行设置一个限制,例如: 加载 2 行 root_id 570 和 1 行 root_id 392:
id | root_id | parent_id |name
----------------------------------
613 | null | null | m1
612 | null | null | m4
570 | null | null | m1
635 | 570 | 570 | m6
653 | 570 | 635 | m1
392 | null | null | m2
753 | 392 | 392 | m5
391 | null | null | m7
【问题讨论】:
标签: android database sqlite android-sqlite common-table-expression