2021-05-24

MYSQL之合并查询 UNION、UNION ALL

学习目标

  • 掌握UNION和UNION ALL的使用方法

  • 知道UNION和UNION ALL的区别

 

1 UNION

UNION 操作符用于合并两个或多个 SELECT 语句的结果集,并消除重复行。

注意,使用UNION时,两个结果集必须有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

数据集介绍

  • 我们的数据集很简单,图书(book)表

IDTitle
1The Witcher
2Harry Potter
3Nineteen Eighty-Four
4The Great Gatsby
  • 电影(Movies)表

IDTitle
1Iron Man
2Harry Potter
3Dr Strange
4Matrix

UNION 合并数据

  • 我们可以使用UNION将两个表中数据合并到一起,注意UNION合并两个SELECT语句的结果中会去除重复值,如下图所示

 

SELECT * FROM BOOKS 
UNION 
SELECT * FROM MOVIES

查询结果 :

IDTitle
1The Witcher
2Harry Potter
3Nineteen Eighty-Four
4The Great Gatsby
1Iron Man
3Dr Strange
4Matrix
  • 上面的结果中所有的书名和电影名都放在一个表中,需要注意,在电影表和图书表里都包含Harry Potter,但是在结果中出现了一次

  • 小结

    • 选择的列数必须相同:

      SELECT title FROM BOOKS 
      UNION 
      SELECT * FROM MOVIES

      上面的SQL会报错:1222 - The used SELECT statements have a different number of columns, Time: 0.000000s

    • 所选列的数据类型必须在相同的数据类型组中(如数字或字符)

    • 列的名称不必相同

      SELECT title AS books FROM BOOKS 
      UNION 
      SELECT title AS movies FROM MOVIES

      上面的SQL会正常执行

2 UNION ALL

  • UNION ALL 运算符用于将两个 SELECT 语句的结果组合在一起,重复行也包含在内,如下图所示:

 

  • UNION ALL 运算符所遵从的规则与 UNION 一致。

SELECT * FROM BOOKS
UNION ALL
SELECT * FROM MOVIES

查询结果:

IDTitle
1The Witcher
2Harry Potter
3Nineteen Eighty-Four
4The Great Gatsby
1Iron Man
2Harry Potter
3Dr Strange
4Matrix
  • 从上面的结果中看出 Harry Potter 出现了两次

 

小结

UNIONUNION ALL关键字都可以将两个结果集合并为一个,主要区别如下:

1、UNION在进行表连接后会去掉重复的记录,而UNION ALL不会去重

2、UNION因为要去重,所以需要对表中的元素进行排序,当数据量较大时,UNION操作会比较耗时

3、UNION ALL只是简单的将两个结果合并后就返回,速度较快

4、在合并数据时,如果确定没有重复数据,尽量使用UNION ALL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值