IT用語集 › データベース › 再帰クエリ

再帰クエリ

データベース Svenska → 更新: 2026-10-22

階層やグラフをたどるために自分自身を呼び出す SQL クエリ。WITH RECURSIVE で実現する。

隣接リスト(parent_id 方式)のテーブルから、部分木全体や祖先の連鎖を取り出す標準的な方法だ。再帰 CTE は2つの部分でできている。出発点の行を返す基底部と、CTE 自身に結合して次の階層(たとえば子)を取る再帰部だ。データベースは再帰部が行を返さなくなるまで繰り返す。

「すべてのサブカテゴリを取る」「コメントスレッド全体」「グラフの最短経路」「ある従業員より上の全管理職」といった用途がある。PostgreSQL、SQL Server、Oracle、MySQL 8以降、SQLite が対応している。落とし穴は、終了を保証する条件がないと循環グラフで無限ループになりうることだ(CYCLE 保護を持つ DB もある)。深い木は遅くなることもある。隣接リストを実用的にしている接着剤であり、CTE とも関係が深い。

← 用語集に戻る