再帰クエリ 【recursive query】 再帰SQL

概要

再帰クエリ(recursive query)とは、SQLの特殊なクエリ構文の一つで、クエリの結果に対して同じクエリを繰り返し実行するもの。

WITH RECURSIVE句とUNION ALL句を組み合わせ、「WITH RECURSIVE 一時テーブル AS (非再帰項 UNION ALL 再帰項)」のように記述する。一時テーブルは再帰クエリの処理途上の状態や結果を格納するテーブルの名前、非再帰項は最初に一度だけ実行されるSELECT文、再帰項は再帰的に繰り返し実行されるSELECT文である。

再帰クエリが実行されると、まず非再帰項が実行され、結果を一時テーブルに格納する。次に一時テーブルを対象に再帰項が実行され、結果が一時テーブルに格納される。一時テーブルが空になるまで「再帰項の実行→一時テーブル上書き格納」を繰り返す。非再帰項と再帰項の各回の抽出結果はUNION ALLで順番に連結され、最後に一時テーブルにまとめて格納される。

再帰クエリの仕組みおよびWITH RECURSIVE句はSQLの標準規格にも採用されており、Oracle DatabaseSQL ServerIBM Db2MySQLMariaDBPostgreSQLなど主要なRDBMSのほとんどが対応している。

(2023.7.6更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる