2012年12月7日金曜日

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

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から。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。