postgresql ツリー構造のテーブルを再帰的に取得

2012年12月7日金曜日 - 投稿者 さい 時刻: 13:12
postgresqlで、ツリー構造を持つテーブルにて、指定したIDを親として、親含めた子IDを再帰的に取得するSQL。
uidがユニークID、pidが親ID。

WITH RECURSIVE r AS
(SELECT * FROM Tree WHERE uid = '123'
UNION ALL
SELECT Tree.* FROM Tree, r WHERE Tree.pid = r.uid)
SELECT * FROM r ORDER BY uid;


※WITH RECURSIVEはpostgres8.4から。