再帰SQL

提供:onayami

再帰SQL(Recursive SQL)とは

再帰SQLは、SQL言語の機能の一つであり、自己参照的な関係を持つデータセットに対してクエリを実行するための機能です。

特徴

  • SQLのSELECT文において、WITH句と共に使用されることが多い。
  • 自己結合や再帰的なクエリを実現し、階層データや木構造のデータを扱う際に有用である。
  • 典型的な用途として、組織図、階層構造、部門階層などのデータを取得する場合に利用される。

利点

  • 複雑な階層構造を持つデータを効率的にクエリすることができる。
  • データの階層関係や組織図などを容易に取得し、表示できる。

使用例

例として、組織の部門階層を再帰SQLで取得するクエリは以下のようになる:

WITH RECURSIVE DepartmentHierarchy AS (
    SELECT id, name, parent_id
    FROM departments
    WHERE id = 1  -- 最上位部門のIDを指定する
    UNION ALL
    SELECT d.id, d.name, d.parent_id
    FROM departments d
    INNER JOIN DepartmentHierarchy dh ON d.parent_id = dh.id
)
SELECT * FROM DepartmentHierarchy;

このクエリは、departmentsテーブルから最上位部門(id = 1)を起点として、再帰的に部門階層を取得します。

参考