In docs, the join of non-recursive part to recursive is done via CROSS JOIN
. Is there some benefit to using it instead of INNER JOIN
? Is it just a subjective choice?
CREATE TEMPORARY TABLE folders (id INT, parent INT) ON COMMIT DROP;
INSERT INTO folders
(id, parent)
VALUES
(1, null),
(2, 1),
(3, 2);
using CROSS JOIN
WITH RECURSIVE tree (id, parent) AS (
SELECT id, parent
FROM folders
WHERE id = 3
UNION ALL
SELECT p.id, p.parent
FROM folders p, tree
WHERE tree.parent = p.id
)
using INNER JOIN
WITH RECURSIVE tree (id, parent) AS (
SELECT id, parent
FROM folders
WHERE id = 3
UNION ALL
SELECT p.id, p.parent
FROM folders p
INNER JOIN tree
ON tree.parent = p.id
)