sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL:条件が真になるまでループする

    あなたの考えはSQLにとって間違っています。ループや条件、変数の観点から考えないでください。代わりに、必要なデータを説明する方法を考えてください。トリッキーな部分は、クエリがそれ自体の結果を参照するようにしたいということです。それが再帰CTE 対象:

    あなたはこのようなものを探しています:

    with recursive path as (
        select id, parent from T where id = 4
        union all
        select t.id, t.parent from T t join path p on t.id = p.parent
    )
    select id, parent
    from path
    

    それはあなたにこれを与えるでしょう:

     id | parent 
    ----+--------
      4 |      2
      2 |      1
      1 |       
    

    次に、データベースの外部でよりリンクされたリスト(またはクライアント言語で適切なもの)になるパスにそれを戻すことができます。 parentを含める必要はありません もちろんですが、それを含めると「ポインタ」を修正するのに役立ちます。




    1. asp.netのストアドプロシージャから戻り値を取得する

    2. タイムゾーン関数のヘルプ

    3. SQLServerでの単純なマージステートメントの例

    4. mysqldumpエラー1045正しいパスワードなどにもかかわらずアクセスが拒否されました