树形结构存储的表(自身关联)查询.PostgreSQL
PostgreSQL没有提供像Oracle等数据库的实用函数。对于常见到菜单menus表:主要字段有id,parent_id...
一下是一个递归查询函数:
--查询结果集含自身CREATE OR REPLACE FUNCTION public.query_child_menus (integer) RETURNS SETOF public.menus AS'DECLAREitemid ALIAS FOR $1;itemrecord record;BEGIN SELECT s.* INTO itemrecord FROM public.menus swhere id=itemid; RETURN NEXT itemrecord; IF (select count(1) from public.menus s where s.parent_id=itemrecord.id) >0THEN for itemrecord in SELECT s.* FROM public.menus swhere s.parent_id=itemrecord.id LOOP for itemrecord in select * from public.query_child_menus (itemrecord.id) LOOP RETURN NEXT itemrecord; end LOOP; end LOOP; END IF; RETURN;END;'LANGUAGE 'plpgsql' 用法:select * from public.query_child_menus (3);
结果集字段与menus表字段相同。
页:
[1]