再帰SQL
再帰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)を起点として、再帰的に部門階層を取得します。