PostgreSQL 查询把多条记录合并一条

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL 查询把多条记录合并一条相关的知识,希望对你有一定的参考价值。

参考技术A 原始数据:

直接上sql:

结果:

好来,就到这里了,谢谢

多条SQL语句对查询结果集的垂直合并

首先我们先看一个需求

你有一个表用户表A 和一个用户详情表B 和一个销售单表C

A---->B 一对多关系   A---->C一对多关系

如果你select A  join B on(B和A的外键) 查询出2条记录结果集

如果你select A  join C on(C和A的外键) 查询出3条记录结果集

那你 如果你select A  join B on(B和A的外键)  join C on(C和A的外键) 查询出2*3=6条记录结果集

这个时候 如果select语句中有聚合函数(sum count )很可能导致查询的结果不符合需求的要求。

解决办法

1. 用两条sql查询 然后通过java对结果集进行合并(操作两条记录查询出来的两个List)。

缺点:如果需求含有分页和搜索。。。用java做不了

2. 用两条sql查询  然后就是用sql的垂直合并了

select * from (sql1) 别名1 join (sql2)别名2 on(你需求需要的条件) 就是把两条sql当成两个子查询

优点:解决了用java操作List进行合并,做不了分页搜索的问题。

工作中做某张报表的时候发现的。sql语句含有多个一对多关系的时候 注意影响聚合函数的结果。所以采用了先拆分sql,然后根据需求垂直合并。

以上是关于PostgreSQL 查询把多条记录合并一条的主要内容,如果未能解决你的问题,请参考以下文章

sql内多条数据合并为一条

oracle 如何返回多条记录

如何使用行号将多条记录合并为一条?

sql带条件多条数据合并为一条数据并换行

sql语句,合并多条记录中的相同字段。

求助:SQLSERVER多条查询语句合并