再帰クエリ
From Wikipedia, the free encyclopedia
標準SQLでは再帰クエリを共通表式の一環として定義している。WITH RECURSIVE 形式の構文をサポートする関係データベース管理システムを以下に挙げる。通常RECURSIVE句は省略可能であるが、PostgreSQLでは省略できない。:
- IBM DB2 [1]
- Microsoft SQL Server [2]
- Firebird 2.1[3]
- PostgreSQL 8.4 [4]
- Oracle Database 11gR2[5]
- H2 Database[6]
例 (PostgreSQL):
WITH RECURSIVE r(level, employee, empno, mgr) AS (
SELECT 1, ename, empno, mgr
FROM emp WHERE mgr IS NULL
UNION ALL
SELECT r.level + 1, repeat(' ', r.level) || emp.ename, emp.empno, emp.mgr
FROM emp, r WHERE emp.mgr = r.empno
)
SELECT * FROM r;