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

Oracle階層クエリをpostgresqlに変換する方法は?

    PostgreSQLでは、再帰クエリは最初に初期を指定することによって構築されます 行のセット(非再帰用語 、つまり、階層のルートレベルまたは最終レベルにあるもの)。後続の反復(再帰項UNION ALLの後のサブクエリ )次に、入力行セットの残りの行から結果セットに行を追加します。 行が追加されなくなるまで。

    あなたの場合、最初のサブクエリはフィルタリングされていないので、最初の実行ですべての行を追加するだけで、後続の実行には何も残しません。

    次のことを試してください:

    WITH RECURSIVE q AS (
      SELECT po.catalog_id,po.sub_tree_id
      FROM my_catalog po
      WHERE sub_tree_id = 0  -- this initially selects only "root" rows
    UNION ALL
      SELECT po.catalog_id,po.sub_tree_id
      FROM my_catalog po
      JOIN q ON q.catalog_id=po.sub_tree_id
    )
    SELECT * FROM q;
    



    1. 今日、今週、今月のphpmysqlからレコードを選択します

    2. Androidを使用してリモートMySQLデータベースに接続する

    3. SQLクエリを使用してテーブル内の2つのフィールド間で減算を行う方法

    4. 最初にphpに挿入された単一の画像のみを持つ複数の画像で行を更新する方法