我有下表:
我有以下查询:
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
我想根据祖先的数量填写“级别”列。但我的代码不起作用。它仅在parent_id为null的情况下填充行。
答案 0 :(得分:1)
这是一个简单的错字。
SELECT
之后的递归UNION ALL
不应该读取
SELECT u.user_id, u.parent_id, u.level + 1
但
SELECT u.user_id, u.parent_id, users_r.level + 1
如果level
中没有users
列,您会立即注意到。