I have the following table:
table 'users'
and I have the following query:
WITH RECURSIVE users_r AS (
SELECT user_id, parent_id, 0 as level
FROM users
WHERE parent_id is null
UNION ALL
SELECT u.user_id, u.parent_id, u.level + 1
FROM users u
INNER JOIN users_r
ON (u.parent_id = users_r.user_id)
)
SELECT * FROM users_r LIMIT 1000
I want to fill "level" column with depending on the count of ancestors. But my code isn't working. It fills rows only where parent_id is null.
Result of my code
asked Nov 7, 2016 at 11:23
-
1meta.stackoverflow.com/questions/285551/…user330315– user3303152016年11月07日 11:27:28 +00:00Commented Nov 7, 2016 at 11:27
1 Answer 1
It is a simple typo.
The recursive SELECT
, immediately after the UNION ALL
should not read
SELECT u.user_id, u.parent_id, u.level + 1
but
SELECT u.user_id, u.parent_id, users_r.level + 1
You would have noticed right away if you didn't have a level
column in users
.
answered Nov 7, 2016 at 11:56
Comments
lang-sql