首页 > 数据库技术 > 详细

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

时间:2018-03-12 13:17:57      阅读:462      评论:0      收藏:0      [点我收藏+]

首先我们先看一个需求

你有一个表用户表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语句对查询结果集的垂直合并

原文:https://www.cnblogs.com/ssskkk/p/8548487.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!