我的编程空间,编程开发者的网络收藏夹
学习永远不晚

简单聊一聊SQL中的union和union all

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

简单聊一聊SQL中的union和union all

概念

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

UNION 操作符选取不同的值,如果允许得到重复的值,可以使用 UNION ALL

基础语法

-- union
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

-- union all
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

注意:
UNION 内部的每个 SELECT 语句必须拥有相同数量的列

列也必须拥有相似的数据类型

每个 SELECT 语句中的列的顺序必须相同

使用技巧

我们发现我们用 UNION 得到的结果都是必须是相同的,这就不得不提 inor 这两个关键字了

-- in
select * from users 
where name in ('sbc', 'bhy');

-- or
select * from users
where name = 'sbc' or name = 'bhy';

select * from users
where name = 'sbc' or tel = '123456';

-- union
select * from users
where name = 'sbc'
union
select * from users
where name = 'bhy';

select * from users
where name = 'sbc'
union
select * from users
where tel = '123456';

通过在用户表(users)这几个select语句中我们比较一下

如果我们想要名字为 sbc 或者 bhy 的用户我们可以用inorunion都可以实现

如果在较大的数据量下差距就会有明显的差距,如果 name 字段存在索引,这几种方法都是不分上下的;可是如果像 or 写法的第二种情况,那数据库都会去找两个字段各自的索引吗,答案不是的,数据库只会寻找一个字段的索引,而另一个字段就需要全局查询

这样遇到较大的数据量就会耗费大量的时间,但是 union 方法的第二种方法就会引用两次索引。

区别

  • union :对两个结果集进行并集操作,不包括重复行,相当于distinct,同时进行默认规则的排序
  • union all:对两个结果集进行并集操作,包括重复行,即所有的结果全部显示,不管是不是重复;

tips
union all只是合并查询结果,并不会进行去重和排序操作,在没有去重的前提下,使用union all的执行效率要比union高

总结

如果遇到没有索引的表或者只对单个字段进行筛选,其实推荐使用 or 和 in ,看上去优雅简洁

如果遇到多个索引列的情况,还是推荐使用 union 和 union all

到此这篇关于SQL中union和union all的文章就介绍到这了,更多相关SQL中union和union all内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

简单聊一聊SQL中的union和union all

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

简单聊一聊SQL中的union和union all

在写SQL的时候,偶尔会用到两个表的数据结合在一起返回的,就需要用到UNION和UNIONALL,这篇文章主要给大家介绍了关于SQL中union和union all的相关资料,需要的朋友可以参考下
2023-02-22

简单聊一聊SQL中的union和union all

目录概念基础语法使用技巧区别总结概念mysql UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。UNION 操作符选取不同的值,如果允许得到重复的值,可以使用
2023-02-22

sql中的union和union all的区别

union仅返回唯一行,而union all包含重复行;union在合并前去重,union all不对行去重。SQL 中 UNION 和 UNION ALL 的区别UNION 和 UNION ALL 都是用于合并两个或多个表中的行的 SQ
sql中的union和union all的区别
2024-05-02

SQL中的union和union all怎么使用

这篇文章主要介绍了SQL中的union和union all怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL中的union和union all怎么使用文章都会有所收获,下面我们一起来看看吧。概念MyS
2023-03-01

简单了解MySQL union all与union的区别

union 是对数据进行并集操作,不包括重复行,同时进行默认排序Union all 是对数据进行并集操作,包括重复行,不进行排序举例说明: 创建数据库表:CREATE TABLE `t_demo` (`id` int(32) NOT NUL
2022-05-19

sql中union和union all的用法是什么

这篇文章给大家介绍sql中union和union all的用法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union a
2023-06-28

mysql中的union和union all的区别

mysql中的union和union all集合操作符之间的差异:union返回唯一行,而union all返回所有行,包括重复行。union按升序对结果集排序,而union all不排序。选择union消除重复行,而选择union all
mysql中的union和union all的区别
2024-04-26

sql中的Union All怎么用

union all 运算符在 sql 中组合 select 结果集,但不消除重复行,用法包括合并结果集和保留重复行。SQL 中的 UNION ALLUNION ALL 是 SQL 中一个用于组合两个或多个 SELECT 语句结果集的运算符
sql中的Union All怎么用
2024-05-10

mysql中union和union all的使用及注意事项

在MySQL中,UNION和UNION ALL是用于合并两个或多个SELECT语句的结果集的操作符。它们的主要区别在于UNION会自动去除重复的行,而UNION ALL会保留所有行。使用方法:1. UNION语句的语法:SELECT col
2023-08-11

mysql中union和union all的使用及注意事项

这篇文章主要给大家介绍了关于mysql中union和union all的使用及注意事项的相关资料,需要的朋友可以参考下
2022-11-13

sql中union和join的区别

sql 中 union 与 join 的区别:union 合并相同结构表的行,消除重复项;join 基于条件连接表的行,允许不同结构。union 性能通常比 join 快,但需要相同结构表;join 灵活但性能可能较低。SQL 中 UNIO
sql中union和join的区别
2024-05-02

sql中union all的使用方法是什么

UNION ALL是用于将两个或多个SELECT语句的结果组合成一个结果集的操作符。与UNION不同的是,UNION ALL会保留重复的行。使用方法如下:```SELECT column1, column2, ... FROM table1
2023-10-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录