Пытаюсь подсчитать количество потомков для сущности в бд, которые связаны по parent_id.
SELECT *, @id := id, (WITH RECURSIVE `cte` AS (
SELECT id
FROM `comments`
WHERE id = @id
UNION
SELECT t.id
FROM `cte`
JOIN `comments` AS `t` ON `t`.`parent_id` = `cte`.`id`
)
SELECT COUNT(*) FROM cte) AS c_count FROM comments;
Запрос выше возвращает 1 в колонке c_count для всех рядов выборки.
Но отдельно рекурсивный запрос с указанием конкретного id возвращает корректный результат, например запрос ниже вернет 9, как можно исправить данное поведение?
WITH RECURSIVE `cte` AS (
SELECT id
FROM `comments`
WHERE id = 86
UNION
SELECT t.id
FROM `cte`
JOIN `comments` AS `t` ON `t`.`parent_id` = `cte`.`id`
)
SELECT COUNT(*) FROM cte