postgresql的查询函数(数组)

postgresql的查询函数(数组),第1张

概述示例表: CREATE TABLE students( sno character varying(32) NOT NULL, --学号 sname character varying(64) NOT NULL, --姓名 sage integer, --年龄 scid character varying(32), -- 班级id scname character varyi

示例表:

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的查询函数(数组)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1176136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存