2016-11-07 6 views
0

私は、次の表があります。再帰クエリ

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

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –

答えて

1

シンプルなタイプミスです。あなたはuserslevel列を持っていなかった場合

再帰SELECTは、UNION ALL

SELECT u.user_id, u.parent_id, u.level + 1 

しかし

SELECT u.user_id, u.parent_id, users_r.level + 1 

を読んではいけません直後あなたはすぐに気づいているだろう。

+0

Bigありがとう、今働いている –