MySQL两个查询如何合并成一个结果详解

 更新时间:2022年08月31日 14:17:41   作者:kuku_zhongzi  
利用union关键字,可以给出多条select语句,并将它们的结果组合成单个结果集,下面这篇文章主要给大家介绍了关于MySQL两个查询如何合并成一个结果的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

MySQL 查询合并

如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。

注意:两个列表中的字段要一样才可以合并(顺序也要一样)

满足条件:

1、两个select查询的列的数量必须相同;

2、每个列的数据类型需要相似;

1.先写两条select

第一条select:

SELECT
	DATE_FORMAT(add_time, '%Y-%m-%d') as 'add_time',
	COUNT(add_time) as 'reach_intention'
FROM
	table1
where
## where 条件可以根据自己实际情况来定
	DATE_FORMAT(add_time, '%Y-%m-%d') > DATE_FORMAT(date_sub(now(), interval 1 month), '%Y-%m-%d')
group by
	DATE_FORMAT(add_time, '%Y-%m-%d')

这是查询出来的结果

结果一

第二条select:

select
	DATE_FORMAT(add_date, '%Y-%m-%d') as 'add_time' ,
	COUNT(add_date)  as 'post_release'
from
	table2
where
## where 条件可以根据自己实际情况来定
	DATE_FORMAT(add_date, '%Y-%m-%d') > DATE_FORMAT(date_sub(now(), interval 1 month), '%Y-%m-%d')
group by
	DATE_FORMAT(add_date, '%Y-%m-%d')

第二条select查询出来的结果

2.合并查询结果

先把两条select用union all连接起来

SELECT
		DATE_FORMAT(add_time, '%Y-%m-%d') as 'add_time', COUNT(add_time) as 'reach_intention' ,  '' as 'post_release'
	FROM
		table1
	where
		DATE_FORMAT(add_time, '%Y-%m-%d') > DATE_FORMAT(date_sub(now(), interval 30 day), '%Y-%m-%d')
	group by
		DATE_FORMAT(add_time, '%Y-%m-%d')
UNION ALL
	select
		DATE_FORMAT(add_date, '%Y-%m-%d') as 'add_time' , '' as 'reach_intention' ,  COUNT(add_date) as 'post_release'
	from
		table2
	where
		DATE_FORMAT(add_date, '%Y-%m-%d') > DATE_FORMAT(date_sub(now(), interval 30 day), '%Y-%m-%d')
	group by
		DATE_FORMAT(add_date, '%Y-%m-%d') 

在外层嵌套一个select

## 括号里面放 用 union all 连接的select 
select * from () test
## 这里要给表起个别名 不然会报 Every derived table must have its own alias 每个派生表都必须有自己的别名

把union all 连接的select 放到括号里面去然后运行

select
	*
from
(
	SELECT
		DATE_FORMAT(add_time, '%Y-%m-%d') as 'add_time', COUNT(add_time) as 'reach_intention' ,  '' as 'post_release'
	FROM
		table1
	where
		DATE_FORMAT(add_time, '%Y-%m-%d') > DATE_FORMAT(date_sub(now(), interval 30 day), '%Y-%m-%d')
	group by
		DATE_FORMAT(add_time, '%Y-%m-%d')
UNION ALL
	select
		DATE_FORMAT(add_date, '%Y-%m-%d') as 'add_time' , '' as 'reach_intention' ,  COUNT(add_date) as 'post_release'
	from
		table2
	where
		DATE_FORMAT(add_date, '%Y-%m-%d') > DATE_FORMAT(date_sub(now(), interval 30 day), '%Y-%m-%d')
	group by
		DATE_FORMAT(add_date, '%Y-%m-%d') 
) test

运行结果

把结果按日期分组排序。

使用 group by 和 order by 关键字

select
	add_time,
	sum(reach_intention) as 'reach_intention' ,
	sum(post_release) as 'post_release'
from
	(
	SELECT
		DATE_FORMAT(add_time, '%Y-%m-%d') as 'add_time', COUNT(add_time) as 'reach_intention' , '' as 'post_release'
	FROM
		table1
	where
		DATE_FORMAT(add_time, '%Y-%m-%d') > DATE_FORMAT(date_sub(now(), interval 30 day), '%Y-%m-%d')
	group by
		DATE_FORMAT(add_time, '%Y-%m-%d')
UNION ALL
	select
		DATE_FORMAT(add_date, '%Y-%m-%d') as 'add_time' , '' as 'reach_intention' , COUNT(add_date) as 'post_release'
	from
		table2
	where
		DATE_FORMAT(add_date, '%Y-%m-%d') > DATE_FORMAT(date_sub(now(), interval 30 day), '%Y-%m-%d')
	group by
		DATE_FORMAT(add_date, '%Y-%m-%d') ) test
group by
	test.add_time
order by
	test.add_time desc

结果如下

总结

到此这篇关于MySQL两个查询如何合并成一个结果的文章就介绍到这了,更多相关MySQL两个查询合并一个内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • InnoDB的关键特性-插入缓存,两次写,自适应hash索引详解

    InnoDB的关键特性-插入缓存,两次写,自适应hash索引详解

    下面小编就为大家带来一篇InnoDB的关键特性-插入缓存,两次写,自适应hash索引详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • mysql 列转行,合并字段的方法(必看)

    mysql 列转行,合并字段的方法(必看)

    下面小编就为大家带来一篇mysql 列转行,合并字段的方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 解析Mysql多表查询的实现

    解析Mysql多表查询的实现

    本篇文章是对Mysql多表查询的实现进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL数据库执行Update卡死问题的解决方法

    MySQL数据库执行Update卡死问题的解决方法

    最近开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果,下面这篇文章主要给大家介绍了关于MySQL数据库执行Update卡死问题的解决方法,需要的朋友可以参考下
    2022-05-05
  • windows下如何安装和启动MySQL

    windows下如何安装和启动MySQL

    本篇文章主要给大家介绍windows下如何安装和启动MySQL,需要的朋友跟着小编一起来学习啦
    2015-08-08
  • centos 6.9安装mysql的详细教程

    centos 6.9安装mysql的详细教程

    这篇文章主要介绍了centos 6.9安装mysql的详细教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-07-07
  • 浅谈慢SQL优化之索引的作用

    浅谈慢SQL优化之索引的作用

    本文针对 MySQL 数据库的 InnoDB 存储引擎,介绍其中索引的实现以及索引在慢 SQL 优化中的作用,本文主要讨论不同场景下索引生效与失效的原因,感兴趣的小伙伴可以跟着小编一起来探讨
    2023-05-05
  • mac 装5.6版本mysql 设置密码的简易方法

    mac 装5.6版本mysql 设置密码的简易方法

    这篇文章主要介绍了mac 装5.6版本mysql 设置密码的简易方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • MySQL单表千万级数据处理的思路分享

    MySQL单表千万级数据处理的思路分享

    日前笔者需要处理MySQL单表千万级的电子元器件数据,进行数据归类, 数据清洗以及器件参数处理,进而得出国产器件与国外器件的替换兼容性数据,为电子工程师寻找国产替换件提供参考。
    2021-06-06
  • MySQL笔记之修改表的实现方法

    MySQL笔记之修改表的实现方法

    我们在创建表的过程中难免会考虑不周,因此后期会修改表。本篇文章就介绍了在mysql中修改表的实现方法。需要的朋友参考下
    2013-05-05

最新评论