1.mysql   union  语法

mysql   union 用于把来自多个select  语句的结果组合到一个结果集合中。语法为:

select  column,......from table1

union [all]

select  column,...... from table2

...

在多个select  语句中,对应的列应该具有相同的字段属性,且第一个select 语句中被使用的字段名称也被用于结果的字段名称。

1.1 union  与 union all 的区别

当使用union  时,mysql 会把结果集中重复的记录删掉,而使用union  all ,mysql 会把所有的记录返回,且效率高于union 。

2. mysql union  用法示例

union 常用与数据类似的两张或多张表查询,如不同的数据分类表,或者是数据历史表等,下面是用于测试的两张表;

2.1使用 UNION 查询

查询两张表中的文章 id 号及标题,并去掉重复记录:

SELECT aid,title FROM article UNION SELECT bid,title FROM blog

返回查询结果如下:

2.2.UNION 查询结果说明

  1. 重复记录是指查询中各个字段完全重复的记录,如上例,若 title 一样但 id 号不一样算作不同记录。
  2. 第一个 SELECT 语句中被使用的字段名称也被用于结果的字段名称,如上例的 aid。
  3. 各 SELECT 语句字段名称可以不同,但字段属性必须一致。

3.使用 UNION ALL 查询

查询两张表中的文章 id 号及标题,并返回所有记录:

SELECT aid,title FROM article UNION ALL SELECT bid,title FROM blog

返回查询结果如下:

显然,使用 UNION ALL 的时候,只是单纯的把各个查询组合到一起而不会去判断数据是否重复。因此,当确定查询结果中不会有重复数据或者不需要去掉重复数据的时候,应当使用 UNION ALL 以提高查询效率。

4.MySQL UNION ORDER BY

在 MySQL UNION 中使用 ORDER BY 和 LIMIT 是有些需要特别注意的地方,因此单独列出来说明一下。

下面是用于例子测试的两张原始数据表:

4.1UNION 子句中使用 ORDER BY

子句中使用 ORDER BY,即将 SELECT 子句的结果先排序,然后再把这些子句查询的结果进行集合。

在子句中使用 ORDER BY,由于优先级问题,需要将整个子句加圆括号(),且必须与 LIMIT 结合使用:

(SELECT aid,title FROM article ORDER BY aid DESC LIMIT 10)
UNION ALL
(SELECT bid,title FROM blog ORDER BY bid DESC LIMIT 10)

返回查询结果如下:

4.2UNION 整句中使用 ORDER BY

如果想使用 ORDER BY 或 LIMIT 来对全部 UNION 结果进行分类或限制,则应对单个 SELECT 语句加圆括号,并把 ORDER BY 或 LIMIT 放到最后一个的后面。

(SELECT aid,title FROM article)
UNION ALL
(SELECT bid,title FROM blog)
ORDER BY aid DESC

返回查询结果如下:

整句中使用 ORDER BY,去掉 SELECT 子句中的圆括号虽然结果是一样的,但为了语句清晰,建议不要省略圆括号。

4.3 UNION ORDER BY 应用于别名

如果 SELECT 中使用到了字段别名,则 OEDER BY 必须引用别名:

(SELECT a AS b FROM table) UNION (SELECT ...) ORDER BY b

5.MySQL UNION LIMIT

在 MySQL UNION 中使用 LIMIT 用于限制返回的记录条数,如果对 SELECT 子句做限制,需要对 SELECT 添加圆括号:

(SELECT aid,title FROM article LIMIT 2)
UNION ALL
(SELECT bid,title FROM blog LIMIT 2)

该 SQL 会返回个 SELECT 语句的两条记录,如果不添加圆括号,则最后一个 LIMIT 2 会作用于整个 UNION 语句而一共返回 2 条记录。

同 ORDER BY 类似,当需要对整个 UNION 的结果进行 LIMIT 限制时,建议将各个 SELECT 语句用圆括号括起来以使语句更加清晰:

(SELECT aid,title FROM article)
UNION ALL
(SELECT bid,title FROM blog)
LIMIT 2

可见,LIMIT 与 ORDER BY 经常搭配使用,二者在 UNION 中的使用方式也是一致的。

参考连接:https://www.cnblogs.com/zhangminghui/p/4408546.html

mysql union 与 union all 语法及用法的更多相关文章

  1. MySQL UNION 与 UNION ALL 语法与用法

    MySQL UNION 语法 MySQL UNION 用于把来自多个 SELECT 语句的结果组合到一个结果集合中.语法为: SELECT column,... FROM table1 UNION [ ...

  2. MySQL全连接(Full Join)实现,union和union all用法

    MySQL本身不支持你所说的full join(全连接),但可以通过union来实现 ,下面是一个简单测试,可以看看: mysql> CREATE TABLE a(id int,name cha ...

  3. mysql union 和 left join 结合查询用法

    union 和 left join 结合查询用法 SELECT u.nickname,z.group_comming_type,z.id,z.user_id,z.title,z.create_time ...

  4. 【连接查询】mySql多表连接查询与union与union all用法

    1.准备两个表 表a: 结构: mysql> desc a; +-------+-------------+------+-----+---------+-------+ | Field | T ...

  5. MySQL 常用语法 之 UNION与UNION ALL

    下面讲一下mySql中的union和union all 的功能以及区别 A union B 是将表A的数据和表B的数据连接成一张表,前提是查询的两张表的列数一定要一样否则出错. A union all ...

  6. Mysql union和union all用法

    1: 什么时候用union和union all ?    我们经常会碰到这样的应用,两个表的数据按照一定的查询条件查询出来以后,需要将结果合并到一起显示出来,这个时候 就需要用到union和union ...

  7. 【转】Mysql联合查询union和union all的使用介绍

    Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下 一.UNION和UNION ALL的作用和语法 UNION 用于合... ...

  8. mysql中的union操作(整理)

    mysql中的union操作(整理) 一.总结 一句话总结: union两侧的字段数和字段类型要是一样的 union可以接多个 orderby和排序可以在最后的union组合之后 1.union简单实 ...

  9. MySQL中UNION和UNION ALL的使用

    在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后 ...

随机推荐

  1. PopupMenuDemo【popupMenu的简单使用】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 本文主要将PopUpMenu和ToolbarDemo[Toolbar作为顶部导航栏的简单使用]进行搭配使用,实现toolbar的溢出 ...

  2. arguments对象详解

    在javascript中,函数是没有重载这一项的,所谓的重载,一个函数可以有多个,就是参数的个数和形式不同所以引用的功能不同,而js不存在函数重载,不管传不传参数,函数里面是否引用,关系都不大,一个函 ...

  3. 【java线程池】

    一.概述 1.线程池的优点 ①降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗: ②提高系统响应速度,当有任务到达时,无需等待新线程的创建便能立即执行: ③方便线程并发数的管控,线 ...

  4. 前端笔记之JavaScript面向对象(二)内置构造函数&相关方法|属性|运算符&继承&面向对象

    一.复习 1.1复习上下文 函数的调用方式 上下文 fun() window obj.fun() obj box.onclick = fun box setInterval(fun,1000) set ...

  5. 学习ASP.NET Core Razor 编程系列十六——排序

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  6. 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. 微信小程序开发07-列表页面怎么做

    接上文:微信小程序开发06-一个业务页面的完成 github地址:https://github.com/yexiaochai/wxdemo 我们首页功能基本完成,我对比了下实际工作中的需求,完成度有7 ...

  8. MySQL InnoDB 修改表列Online DDL

    概述 一般来说数据库结构一经设计,不能轻易更改,因为更改DDL(Data Definition Language)操作代价很高,所以在进行数据库结构设计时需要谨慎. 但是业务发展是未知的,特别是那些变 ...

  9. AppBoxFuture(五): 分布式文件存储-Store Everything

      本来本篇是想介绍前端组件化开发用户界面,发现框架还未实现文件存储,原本计划是后续设计开发的,索性把计划提前,所以本篇将介绍基于Raft实现分布式的文件存储引擎. 一. 实现思路   既然是分布式存 ...

  10. linux 指令备忘

    linux 指令备忘 1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和"..& ...