UNION 用来合并多个 SELECT 结果。

考察如下两个表:

# t1
+----+---------+
| id | pattern |
+----+---------+
| 1 | Divot |
| 2 | Brick |
| 3 | Grid |
+----+---------+ # t2

+----+---------+

| id | pattern |

+----+---------+

| 1 | Divot |

| A | Brick |

| B | Grid |

| C | Diamond |

+----+---------+

一个 union 示例:

mysql> select * from t1 union select * from t2;
+----+---------+
| id | pattern |
+----+---------+
| 1 | Divot |
| 2 | Brick |
| 3 | Grid |
| A | Brick |
| B | Grid |
| C | Diamond |
+----+---------+
6 rows in set (0.00 sec)

默认情况下 UNION 结果中已经去重,所以无须指定 DISTINCT。如果想保留所有结果可指定 ALL

mysql> SELECT * FROM t1 UNION ALL SELECT * FROM t2;
+----+---------+
| id | pattern |
+----+---------+
| 1 | Divot |
| 2 | Brick |
| 3 | Grid |
| 1 | Divot |
| A | Brick |
| B | Grid |
| C | Diamond |
+----+---------+
7 rows in set (0.00 sec)

查询语句中可混合使用 UNION ALLUNION DISTINCT,右边的 UNION DISTINCT 替覆盖掉左边 UNION ALL

结果中的列名将使用第一个 SELECT 语句中定义的列名。各 SELECT 结果中对应位置的列其数据类型应该保持一致。如果不一致,MySQL 会根据结果中的数据类型及长度进行兼容的转换。

UNION 语句中只最后一个 SELECT 可指定 INTO OUTFILE。但其实整个 UNION 查询的结果都是存入这个文件的。

UNION 中不能搭配使用 HIGH_PRIORITY。如果该关键词指定在第一个 SELECT 身上,不会生效,指定在其他 SELECT 上会报语法错误。

结合使用 ORDER BYLIMIT 时,应使用括号将 SELECT 语句包裹。

(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);

对 UNION 结果进行整体排序和数量限制:

(SELECT a FROM t1 WHERE a=10 AND B=1)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2)
ORDER BY a LIMIT 10;

SELECT 中指定了别名时,ORDER BY 应该使用该别名,而不是真实的列名。

--  ✅
(SELECT a AS b FROM t) UNION (SELECT ...) ORDER BY b;
--

MySQL UNION 查询的更多相关文章

  1. mysql union查询

    1.mysql总是通过创建并填充临时表来执行union查询; 2.除非要服务器消除重复的行,否则一定要用union all.如果没有all关键字,mysql会在临时表加个distinct选项,会导致临 ...

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

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

  3. mysql联合查询union

    mysql联合查询,对多表进行组合查询 使用 UNION ALL 命令实例 显示所有 使用UNION 过滤重复的 使方法 select * from (SELECT id,name as usenam ...

  4. MySQL进阶 9: 联合查询 - 查询语句1 union 查询语句2 union ...

    #进阶 : 联合查询 /* union 联合 合并: 将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union ... 应用语境: 要查询的结果来自多个表,但查询的列 ...

  5. mysql的查询、子查询及连接查询

    >>>>>>>>>> 一.mysql查询的五种子句         where(条件查询).having(筛选).group by(分组). ...

  6. 如何查找MySQL中查询慢的SQL语句

    如何查找MySQL中查询慢的SQL语句 更多 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow ...

  7. Mysql子查询、关联查询

    mysql中update.delete.install尽量不要使用子查询 一.mysql查询的五种子句         where(条件查询).having(筛选).group by(分组).orde ...

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

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

  9. mysql常用查询归纳

    一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) .where常用运算符: 比较运算符 > ...

随机推荐

  1. RabbitMQ几个常用面试题

    以下观点,仅为个人理解的总结,如有错漏,欢迎指正! -------------------------------------------------------------------------- ...

  2. ReactNative: 使用Touchable触摸类组件

    一.简介 在应用程序中,最灵魂的功能就是交互.通过给应用程序的组件添加事件来实现交互,进而提高用户体验.然而,ReactNative并不能像Web开发那样可以给大多数的标签元素绑定click事件,例如 ...

  3. IT兄弟连 HTML5教程 多媒体应用 HTML图像地图

    图像地图是带有可点击区域的图像,通常情况下,每个区域是一个相关的超级链接.点击某个区域,就会到达相关的链接,也可以通过图像地图实现图片切换效果. 1  什么是图像地图 把一幅图像分成为多个区域,每个区 ...

  4. Vue 从入门到进阶之路(十一)

    之前的文章我们说了一下 vue 中组件的原生事件绑定,本章我们来所以下 vue 中的插槽使用. <!DOCTYPE html> <html lang="en"&g ...

  5. SpringBoot2.0 整合 JWT 框架,解决Token跨域验证问题

    本文源码:GitHub·点这里 || GitEE·点这里 一.传统Session认证 1.认证过程 1.用户向服务器发送用户名和密码. 2.服务器验证后在当前对话(session)保存相关数据. 3. ...

  6. 阿里面试实战题2----ReentrantLock里面lock和tryLock的区别

    ReentrantLock ReentrantLock(轻量级锁)也可以叫对象锁,可重入锁,互斥锁.synchronized重量级锁,JDK前期的版本lock比synchronized更快,在JDK1 ...

  7. Android中的常用控件之进度条(ProgressBar)

    ProgressBar的常用属性:style,进度条的样式,默认为圆形,用style="?android:attr/progressBarStyleHorizontal"可以将进度 ...

  8. 网站报"组策略阻止了这个程序。要获取详细信息,请与系统管理员联系。"错误。

    今天将一个测试的网站发布到阿里云虚拟主机后,访问网站报“组策略阻止了这个程序.要获取详细信息,请与系统管理员联系.”错误.如下: 但是这个错误在本地调试时是没有的. 经过调查,原来罪魁祸首是 Micr ...

  9. SSH框架之Hibernate第三篇

    1.1 多表关系分析和创建. 1.1.1 表关系分析和创建 表数据和表数据之间可以存在的关系? 一对多的关系 客户和联系人 建立关系原则: 在多的一方创建一个字段,这个字段作为外键指向一的一方的主键 ...

  10. XSS原理及其相应工具使用

    XSS(厉害程度:只要js能实现什么功能,xss就能对client造成什么伤害):   原理:通过web站点漏洞,向客户端交付恶意脚本代码,实现对客户端的攻击目的 主要攻击目的(网页挂马:通过XSS向 ...