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

任意の深さのレートを返す再帰的なSELECTクエリ?

    あなたの説明によると、これはあなたが探しているものかもしれません:

    WITH RECURSIVE cte AS (
       SELECT id, parent_rate_plan_id
       FROM   rate_plan  
       WHERE  id = ${user rate plan ID} 
    
       UNION ALL
       SELECT rp.id, rp.parent_rate_plan_id
       FROM   cte
       JOIN   rate_plan rp ON rp.id = cte.parent_rate_plan_id
       )
    SELECT *
    FROM   cte
    JOIN   rate r ON r.rate_plan_id = cte.id
    ODER   BY length(prefix) DESC
    LIMIT  1;
    

    再帰は、最上位ノード(parent_rate_plan_id IS NULL)になるとすぐに自動的に停止します。 )に到達しました。

    rateに参加する方が効果的です すべての計画を収集した後、一度。

    (再帰的な)CTEに関するマニュアル




    1. SELECTとUPDATEを使用したMySQLのループを使用して、テーブルを並べ替えます

    2. Dockerを使用して、PANICをトリガーしたもの:有効なチェックポイントレコードを見つけることができませんでした

    3. MySQLとPostgreSQLのJSON検索機能

    4. djangoのランタイム警告