MySQL UNION 与 UNION ALL 语法与用法
MySQL UNION 语法
MySQL UNION 用于把来自多个 SELECT 语句的结果组合到一个结果集合中。语法为:
SELECT column,... FROM table1 UNION [ALL] SELECT column,... FROM table2 ...
在多个 SELECT 语句中,对应的列应该具有相同的字段属性,且第一个 SELECT 语句中被使用的字段名称也被用于结果的字段名称。
UNION 与 UNION ALL 的区别
当使用 UNION 时,MySQL 会把结果集中重复的记录删掉,而使用 UNION ALL ,MySQL 会把所有的记录返回,且效率高于 UNION。
MySQL UNION 用法实例
UNION 常用于数据类似的两张或多张表查询,如不同的数据分类表,或者是数据历史表等。下面是用于例子的两张原始数据表:
| aid | title | content |
|---|---|---|
| 1 | 文章1 | 文章1正文内容... |
| 2 | 文章2 | 文章2正文内容... |
| 3 | 文章3 | 文章3正文内容... |
| bid | title | content |
|---|---|---|
| 1 | 日志1 | 日志1正文内容... |
| 2 | 文章2 | 文章2正文内容... |
| 3 | 日志3 | 日志3正文内容... |
上面两个表数据中,aid=2 的数据记录与 bid=2 的数据记录是一样的。
使用 UNION 查询
查询两张表中的文章 id 号及标题,并去掉重复记录:
SELECT aid,title FROM article UNION SELECT bid,title FROM blog
返回查询结果如下:
| aid | title |
|---|---|
| 1 | 文章1 |
| 2 | 文章2 |
| 3 | 文章3 |
| 1 | 日志1 |
| 3 | 日志3 |
UNION 查询结果说明
- 重复记录是指查询中各个字段完全重复的记录,如上例,若 title 一样但 id 号不一样算作不同记录。
- 第一个 SELECT 语句中被使用的字段名称也被用于结果的字段名称,如上例的 aid。
- 各 SELECT 语句字段名称可以不同,但字段属性必须一致。
使用 UNION ALL 查询
查询两张表中的文章 id 号及标题,并返回所有记录:
SELECT aid,title FROM article UNION ALL SELECT bid,title FROM blog
返回查询结果如下:
| aid | title |
|---|---|
| 1 | 文章1 |
| 2 | 文章2 |
| 3 | 文章3 |
| 1 | 日志1 |
| 2 | 文章2 |
| 3 | 日志3 |
显然,使用 UNION ALL 的时候,只是单纯的把各个查询组合到一起而不会去判断数据是否重复。因此,当确定查询结果中不会有重复数据或者不需要去掉重复数据的时候,应当使用 UNION ALL 以提高查询效率。
MySQL UNION 与 UNION ALL 语法与用法的更多相关文章
- mysql union 与 union all 语法及用法
1.mysql union 语法 mysql union 用于把来自多个select 语句的结果组合到一个结果集合中.语法为: select column,......from tabl ...
- MySQL全连接(Full Join)实现,union和union all用法
MySQL本身不支持你所说的full join(全连接),但可以通过union来实现 ,下面是一个简单测试,可以看看: mysql> CREATE TABLE a(id int,name cha ...
- mysql union 和 left join 结合查询用法
union 和 left join 结合查询用法 SELECT u.nickname,z.group_comming_type,z.id,z.user_id,z.title,z.create_time ...
- 【连接查询】mySql多表连接查询与union与union all用法
1.准备两个表 表a: 结构: mysql> desc a; +-------+-------------+------+-----+---------+-------+ | Field | T ...
- MySQL 常用语法 之 UNION与UNION ALL
下面讲一下mySql中的union和union all 的功能以及区别 A union B 是将表A的数据和表B的数据连接成一张表,前提是查询的两张表的列数一定要一样否则出错. A union all ...
- Mysql union和union all用法
1: 什么时候用union和union all ? 我们经常会碰到这样的应用,两个表的数据按照一定的查询条件查询出来以后,需要将结果合并到一起显示出来,这个时候 就需要用到union和union ...
- 【转】Mysql联合查询union和union all的使用介绍
Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下 一.UNION和UNION ALL的作用和语法 UNION 用于合... ...
- mysql中的union操作(整理)
mysql中的union操作(整理) 一.总结 一句话总结: union两侧的字段数和字段类型要是一样的 union可以接多个 orderby和排序可以在最后的union组合之后 1.union简单实 ...
- MySQL中UNION和UNION ALL的使用
在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后 ...
随机推荐
- The 5th Zhejiang Provincial Collegiate Programming Contest------ProblemA:Accurately Say "CocaCola"!
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2965 题意:一群人玩过“7”的游戏,有7的数字或者7的倍数就要喊“coca ...
- 算法导论_ch2
Ch2算法基础 whowhoha@outlook.com 2.1 插入排序 输入:n个数的一个序列〈a1,a2,…,an〉. 输出:输入序列的一个排列〈a′1,a′2,…,a′n〉,满足a′1≤a′2 ...
- Making your local server accessible from anywhere
In reality you probably don’t want to host you websites on your local computer unless you have a ver ...
- Ubuntu Server 中resolv.conf重启时被覆盖的问题
/etc/resolv.conf中设置dns之后每次重启Ubuntu Server时该文件会被覆盖,针对这种情况找了一些个解决方法 防止/etc/resolv.conf被覆盖的方法 方法一 1.需要创 ...
- 版本管理工具介绍—Git篇
前篇 如题,提起版本管理工具相信做C#开发 还是对Git比较陌生 我们可能更熟悉vss.svn 记录此文的目的 更是为以后的前段学习做基础 现在的技术比如nodeJs angularJs ==都 ...
- MSSQLServer基础05(联合查询,连接查询)
联合结果集union(集合运算符) 集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐式转换的),最终输出的集合的列名由第一个集合的列名来确定.(可以用来连接多个 ...
- &&运算符和||运算符的优先级问题
package priority; public class TestAndOrPriority { /* * &&的优先级高就不代表 他会先运行 ||的右边 而是说会把右边用& ...
- node.js模块值formidable
模块地址:https://github.com/felixge/node-formidable var formidable = require('formidable'), http = requi ...
- Yii cookie操作
设置cookie: $cookie = new CHttpCookie('mycookie','this is my cookie'); $cookie->expire = time()+60* ...
- 需要保存数据zabbix,不需要保存数据nagios
需要保存数据zabbix,不需要保存数据nagios cacti 有什么好用的基于Web的Linux系统监控开源工具(网管系统) 要求类似于Ubuntu的Landscape,可以记录下历史CPU数值. ...