本文共 1109 字,大约阅读时间需要 3 分钟。
CREATE TABLE TREE_TEST ( ID INTEGER PRIMARY KEY, NAME VARCHAR(32), PARENT_ID INTEGER REFERENCES TREE_TEST(ID));
INSERT INTO TREE_TEST(ID, NAME, PARENT_ID) VALUES(1, 'TREE_1', NULL);INSERT INTO TREE_TEST(ID, NAME, PARENT_ID) VALUES(11, 'TREE_11', 1);INSERT INTO TREE_TEST(ID, NAME, PARENT_ID) VALUES(12, 'TREE_12', 1);
这样创建了一个简单的树状结构,根节点为TREE_1,它有两个子节点TREE_11和TREE_12。
WITH RECURSIVE tree_path (id, name, parent_id, path) AS ( SELECT id, name, parent_id, name FROM TREE_TEST WHERE name = 'TREE_1' UNION ALL SELECT t.id, t.name, t.parent_id, tp.path || '->' || t.name FROM TREE_TEST t JOIN tree_path tp ON t.parent_id = tp.id) SELECT * FROM tree_path;
查询结果如下: | id | name | parent_id | path | |---|-------|----------|--------------------------| | 1 | TREE_1 | NULL | TREE_1 | | 11 | TREE_11 | 1 | TREE_1->TREE_11 | | 12 | TREE_12 | 1 | TREE_1->TREE_12 |
转载地址:http://npxfk.baihongyu.com/