postgresql中的递归查询

时间:2016-11-07 11:23:15

标签: sql postgresql

我有下表:

table 'users'

我有以下查询:

    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的情况下填充行。

Result of my code

1 个答案:

答案 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列,您会立即注意到。