mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-05 14:02:21 +00:00
38 lines
787 B
SQL
38 lines
787 B
SQL
SET allow_experimental_analyzer = 1;
|
|
|
|
DROP TABLE IF EXISTS tree;
|
|
CREATE TABLE tree
|
|
(
|
|
id UInt64,
|
|
link Nullable(UInt64),
|
|
data String
|
|
) ENGINE=TinyLog;
|
|
|
|
INSERT INTO tree VALUES (0, NULL, 'ROOT'), (1, 0, 'Child_1'), (2, 0, 'Child_2'), (3, 1, 'Child_1_1');
|
|
|
|
WITH RECURSIVE search_tree AS (
|
|
SELECT id, link, data
|
|
FROM tree t
|
|
WHERE t.id = 0
|
|
UNION ALL
|
|
SELECT t.id, t.link, t.data
|
|
FROM tree t, search_tree st
|
|
WHERE t.link = st.id
|
|
)
|
|
SELECT * FROM search_tree;
|
|
|
|
SELECT '--';
|
|
|
|
WITH RECURSIVE search_tree AS (
|
|
SELECT id, link, data, [t.id] AS path
|
|
FROM tree t
|
|
WHERE t.id = 0
|
|
UNION ALL
|
|
SELECT t.id, t.link, t.data, arrayConcat(path, [t.id])
|
|
FROM tree t, search_tree st
|
|
WHERE t.link = st.id
|
|
)
|
|
SELECT * FROM search_tree;
|
|
|
|
DROP TABLE tree;
|