Em docs , a junção da parte não recursiva com a recursiva é feita via CROSS JOIN
. Existe algum benefício em usá-lo em vez de INNER JOIN
? É apenas uma escolha subjetiva?
CREATE TEMPORARY TABLE folders (id INT, parent INT) ON COMMIT DROP;
INSERT INTO folders
(id, parent)
VALUES
(1, null),
(2, 1),
(3, 2);
usandoCROSS 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
)
usandoINNER 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
)