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

Posted palapala

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多条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,然后根据需求垂直合并。

以上是关于多条SQL语句对查询结果集的垂直合并的主要内容,如果未能解决你的问题,请参考以下文章

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

sql语句怎样将查询结果逗号分开

sql语句:将两个查询结果关联显示

SQL查询语句查询多个数据

如何用sql语句将多行合并成一行

sql语句中如何 查询结果显示中间几行