kingBase中从表多行变一列

网友投稿 292 2022-11-14

kingBase中从表多行变一列

使用string_agg()方法。

准确来说,如何在一条SQL语句中,查找主表数据,同时将从表的多行记录的某一字段,集合成一个值,中间以逗号隔开,附在查找结果中一并返回?比如:

1、创建并初始化测试表

--主表CREATE TABLE master(id SERIAL,hero varchar(50));--从表CREATE TABLE slave(id serial,master_id int,name varchar(50));INSERT INTO master(hero) values('时不我与的悲剧英雄');//id = 1INSERT INTO slave(master_id,name) values(1,'赵武灵王赵雍'),(1,'周世宗柴荣'),(1,'诸葛亮');

2、走一个

SELECT a.*,b.persons FROM master a, (SELECT m.id,string_agg(s.name,',') AS persons FROM master m INNER JOIN slave s ON m.id=s.master_id GROUP BY m.id) bWHERE a.id=b.id

要点在于 string_agg(),group by

3、结果

使用系统函数,可以使代码简洁,减少开发量;更重要的是,系统函数很有可能做了针对性优化,或者算法十分讲究,速度比我们自己处理要快,性能更好。所以,有系统函数可以用,首选使用。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于SqlSessionFactory的openSession方法使用
下一篇:RUP(统一过程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~