示例表:
CREATE table students( sno character varying(32) NOT NulL,--学号 sname character varying(64) NOT NulL,--姓名 sage integer,--年龄 scID character varying(32),-- 班级ID scname character varying(64),-- 班级名称 CONSTRAINT students_pkey PRIMARY KEY (sno))这个表记录了学生的学号,姓名以及班级等信息。部分测试数据如下所示:
CREATE OR REPLACE FUNCTION getstudents( OUT cID character varying,OUT cnm character varying,OUT sts character varying[]) RETURNS SetoF record AS$BODY$ declare sc record; begin for sc in (select distinct(scID),scname from students) loop cID := sc.scID; cnm := sc.scname; select array(select sno||' '||sname||' '||sage from students where scID = sc.scID order by sage) into sts; return next; end loop; end;$BODY$ LANGUAGE plpgsql VolATILE COST 100 ROWS 1000;ALTER FUNCTION getstudents() OWNER TO postgres;查询:
select * from getStudents();
结果:
语法糖衣
以上是比较简单传统的方式,还有更加简单的方式,如下:
select scID,scname,array_agg(sno||' '||sname||' '||sage)as stus from students group by scID,scname;
array_agg是特殊的聚集函数,可以将属于同一个的group的记录放到一个数组中。很好用!
总结以上是内存溢出为你收集整理的postgresql的查询函数(数组)全部内容,希望文章能够帮你解决postgresql的查询函数(数组)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)