sql将多个查询结果左右横向拼接

您所在的位置:网站首页 sql多个条件查询多个结果 sql将多个查询结果左右横向拼接

sql将多个查询结果左右横向拼接

2024-07-03 05:23:28| 来源: 网络整理| 查看: 265

今天写springboot接口的时候遇到一个需求:查询多张表计算这些表的条数,然后将这些数据封装到一个对象中,这些表并没有相同的字段或其它的关联关系。这个问题咋一看觉得很简单,但实现起来却有点麻烦。

如果我们现在有两张表要装入模型对象

user表:

po_id name age 1 路飞 19 2 艾斯 null 3 萨博 21

fruit表:

num melon price 56452666 apple 120 26161616 orange 50 45816126 null 200 46164691 watermelon 40 public class MarketInfo { @ApiModelProperty("人员数量") private String companySum; @ApiModelProperty("水果数量") private String personSum; }

单个表的数据我们是能一一查出来的,但是如果一个一个查的话,在Dao层我们就需要写多个dao的接口或者在一个接口中写多个方法,例如上面这个,如果是有两张表的话就需要在dao层接口中写两个方法分别为各个字段查询赋值,这样操作很麻烦,那么有没有简单的方法呢?

因为这些属性各对应一张表的统计数据,首先我们可能会想到连表查询,由于各个表之间没有相关联的字段因此,连表查询的条件无法满足,所以无论是内连接还是外连接都是行不通的。

也有人可能会想到用union对查询结果进行合并,但是union是对查询结果进行纵向上下合并而不是横向合并,请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

如果我们这样写:

select count(*) A from user union all select count(*) B from fruit;

那么我们得到的结果将会是

查询的结果被合并成一列并且后面的字段名还没覆盖了

那么到底应该怎样写才能得到我们想要的结果呢?答案是使用子查询和联表查询相结合。

select * from (select 1 id,count(*) A from user) X left join (select 1 id,count(*) B from fruit) Y on X.id=Y.id

结果:

这里我们人为地为查询结果中添加一个id字段并且给这两个表的值都相同,这样我们就能够根据这个id字段进行连表查询了。

如果不行看到这个id,那么可以查那两个指定字段:

select A,B from (select 1 id,count(*) A from user) X left join (select 1 id,count(*) B from fruit) Y on X.id=Y.id

这样就完美地实现我们想要的效果了。 这个方法需要注意一点就是我们所查询到的结果行数一定要相等。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭