本章讲述如何利用UNION操作符将多条SELECT语句组合成一个结果集。

一、组合查询

多数SQL查询都只包含从一个或多个表中返回数据的SELECT语句。

MYSQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回。这些组合查询通常称为并(union)或复合查询(compound query)。

有两种基本情况,其中需要使用组合查询:

  • 在单个查询中从不同的表返回类似结构的数据
  • 对单个表执行多个查询,按单个查询返回数据

二、创建组合查询

可用UNION操作符来组合数条SQL查询。

利用UNION,可给出多条SELECT语句,将它们的结果组合成单个结果集。

1.使用UNION

UNION的使用很简单。所需做的只是给出每条SELECT语句,在各条语句之间放上关键字UNION。

举一个例子,假如需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的所有物品(不考虑价格)。当然,可以利用WHERE子句来完成此工作,不过这次我们将使用UNION。

首先咱们先看看多条sql语句:

mysql>select vend_id, prod_id, prod_price from products where prod_price <=5;

mysql>select vend_id, prod_id, prod_price from products where vend_id IN (1001,1002);

咱们现在来组合这两条语句:

mysql>select **vend_id, prod_id, prod_price** from products where prod_price <=5;UNIONselect **vend_id, prod_id, prod_price** from products where vend_id IN (1001,1002);

2.UNIOIN规则

  • UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合4条SELECT语句,将要使用3个UNION关键字)。
  • UNION中的每个查询必须包含相同的列、表达式或聚集函数,不过各个列不需要以相同的次序列出。
  • 列数据类型必须兼容;类型不必完全相同,但必须是DBMS可以隐含地转换的类型。

3.包含或取消重复的行

UNION从查询结果集中自动去除了重复的行。这是UNION的默认行为,但是如果需要,可以改变它。

只需要使用UNION ALL

mysql>select **vend_id, prod_id, prod_price** from products where prod_price <=5;UNION ALLselect **vend_id, prod_id, prod_price** from products where vend_id IN (1001,1002);

4.对组合查询结果排序

在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。

不允许使用多条ORDER BY 子句。

mysql>select **vend_id, prod_id, prod_price** from products where prod_price <=5;UNION select **vend_id, prod_id, prod_price** from products where vend_id IN (1001,1002);order by vend_id, prod_price;

MYSQL将用排序语句排序所有SELECT语句返回的所有结果。

Mysql语法之组合查询相关推荐

  1. 初识Mysql(part19)--我需要知道的3条Mysql语句之组合查询

    学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:UNION.UNION ALL 此Blog会用到下面2个表. temp_product2: # id, ...

  2. MySql学习之组合查询(UNION)和全文本搜索(Match()和Against())

    组合查询 一.何为组合查询? 组合查询的目的就是利用UNION操作符将多条SELECT语句的查询结果组合成一个结果集,供我们使用. 有两种基本情况下需要使用组合查询: 1.在单个查询中从不同的表返回类 ...

  3. mysql:union 组合查询

    issue表 employee_table表 Union基础方法 -- union 去除重复 SELECT 1, 2 UNION SELECT 1, 2; -- union all 关联所有 包含重复 ...

  4. 使用python对学生表的查询_多表组合查询——Python操作Mysql数据库

    前面我们介绍了单张表的查询,包括模糊查询.分组.排序.各种筛选条件等等操作,在实际应用中,查询的数据往往不止局限在一张表里,通常需要多张表在一起进行组合查询,今天我们将会对Mysql当中的多张有关联的 ...

  5. MySQL 学习笔记(4)— 组合查询、子查询、插入数据、更新/删除表数据、增加/删除表中的列以及重命名表

    1. 组合查询 1.表的加减法 表的加法,即求 product 和 product2 的并集,UNION 运算会除去重复的记录 SELECT product_id, product_name FROM ...

  6. mysql sql组合_详解mysql 组合查询

    使用UNION 多数SQL查询都只包含一个或多个表中返回数据的单条SELECT语句.MySQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回.这些组合查询通常称为并(uni ...

  7. mysql 组合查询_MySQL组合查询教程

    #MYSQL#这是我MySQL的第八篇教程.本篇主要介绍的是MySQL的组合查询的用法.在大多数的SQL查询中都只包含从一个或者多个表中返回数据的单条SELECT语句,MySQL其实也支持允许执行多条 ...

  8. Mysql的多表查询(表添加,多表查询练习:笛卡尔积、内连接、外连接、子查询、UNION组合查询)

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 一.表的创建 ...

  9. mysql 索引的模糊查询_MYSQL语法(模糊查询,视图,索引)

    MYSQL语法(模糊查询,视图,索引) 2020年08月11日 | 萬仟网IT编程 | 我要评论 MYSQL模糊查询模糊查询,查询name 以张开头的数据select *from t1 where n ...

最新文章

  1. Nagios+pnp4nagios+rrdtool 安装配置为nagios添加自定义插件(三)
  2. 修改用户名_新华美育查找用户名及修改密码的方法分享
  3. java中interrupt,interrupted和isInterrupted的区别
  4. 在标记的HREF属性中javascript:alert(this.innerHTML)会怎么样?
  5. 【Python学习】内置函数(不断更新)
  6. Mysql学习总结(50)——Oracle,mysql和SQL Server的区别
  7. pytorch初入门学习记录
  8. C#中如何截取Windows消息来触发自定义事件
  9. gitlab在push代码的时候报错
  10. php++l+函数,关于PHP中usort()函数的解读
  11. android netd firewall 分析,第2章 深入理解Netd
  12. linux有线无线同时使用教程,巧用无线路由器 让有线、无线网络互通
  13. 在电子电路中,为什么要进行电气隔离?
  14. mysql设置bufferpool_mysql修改buffer_pool大小
  15. Nodejs框架+uniapp前端微商个人相册多端小程序
  16. 快手也抢先字节出手了…
  17. IT内部控制体系建设方案-从IT角度解读《企业内部控制规范》
  18. 2D平台类游戏开发教程(翻译)
  19. 饮食健康会促进心理健康
  20. Linux服务器运维/虚拟主机-李强强-专题视频课程

热门文章

  1. SV绿皮书学习_day1(数据类型)
  2. 如何开发旅游商城系统?
  3. 矩阵可逆的充要条件及证明
  4. 计算机课逃一节,最想逃的课_厦门工学院
  5. 互联网新名词2019年计算机新名词,2019年上半年网络热词盘点 2019最新网络热词排行榜...
  6. Unity 图像识别 接入Face++ 进行 场景识别 和 文字识别
  7. Windows 服务器HTTPS免费证书
  8. 生活不易,未来的路还很长
  9. 7TPSM4220微型步进电机驱动器--ARDUINO驱动
  10. 渡课学习日记 20158/02/8/28java 第七课