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

祖父母列を参照するSQLネストサブクエリ

    これはOracleSQLの制限です。1レベルを超える深さのサブクエリから親クエリ要素を参照することはできません。

    このような場合は関数を使用します:

    CREATE OR REPLACE FUNCTION get_title(p_position_id NUMBER) RETURN VARCHAR2 IS
       l_result       LONG;
       l_position_num NUMBER := 0;
    BEGIN
       FOR cc IN (SELECT position_title
                    FROM position_table
                   WHERE position_table.position_id = p_position_id
                     AND rownum <= 3) LOOP
          l_result       := cc.position_title || ',';
          l_position_num := l_position_num + 1;
       END LOOP;
       RETURN l_result || rpad(',', 3 - l_position_num, ',');
    END;
    

    クエリは次のようになります:

    select
      name,
      phone,
      address,
      get_title(p.position_id) title
    from person_view p
    



    1. 行ロック - 手動で使用

    2. MySQLデータベースでのリンクリストの取得

    3. SQLServerの論理演算子とは-SQLServer/TSQLチュートリアルパート124

    4. SQL開発者のデータ挿入エラー