利用UNION操作符将多条SELECT语句组合成一个结果集。

主要有两种情况需要使用组合查询:

  • 在一个查询中从不同的表返回结构数据;
  • 对一个表执行多个查询,按一个查询返回数据。

UNION规则

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

包含或取消重复的行

UNION从查询结果集中自动去除了重复的行;

换句话说,它的行为与一条SELECT语句中使用多个WHERE子句条件一样。

使用UNION时,重复的行会被自动取消。这是UNION的默认行为,如果愿意也可以改变它。事实上,如果想返回所有的匹配行,可使用UNION A LL而不是UNION。

SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL','IN','MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All';

分析▼

这条语句由两条SELECT语句组成,之间用UNION关键字分隔。UNION指示DBMS执行这两条SELECT语句,

并把输出组合成一个查询结果集

提示:UNION的限制
使用UNION组合SELECT语句的数目,SQL没有标准限制。但是,最好是参考一下具体的DBMS文档,了解它是否对UNION能组合的最大语
句数目有限制。
警告:性能问题
多数好的DBMS使用内部查询优化程序,在处理各条SELECT语句前组合它们。理论上讲,这意味着从性能上看使用多条WHERE子句条件还
是UNION应该没有实际的差别。不过我说的是理论上,实践中多数查询优化程序并不能达到理想状态,所以最好测试一下这两种方法,看哪
种工作得更好。

转载于:https://www.cnblogs.com/lbonet/p/7551666.html

13.组合查询--SQL相关推荐

  1. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

  2. MySQL基础(3)----其他函数 约束 多表查询 子查询 组合查询

    1.其他函数 1.1.字符串函数  --- 操作字符串 常用函数: 函数 功能 CONCAT(s1, s2, ..., sn) 字符串拼接,将s1, s2, ..., sn拼接成一个字符串 LOWER ...

  3. mysql 按月分表的查询_mysql按月分表, 组合查询

    每个月月底最后一天建好下个月的空表 或每年底建1到12月的空表 , table_201901,table_201902,table_201903 增加记录不需要修改,insert到当月对应表就好了. ...

  4. SQL必知必会-组合查询

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

  5. PostgreSQL 一复合查询SQL优化例子 - (多个exists , 范围检索 , IN检索 , 模糊检索 组合)...

    标签 PostgreSQL , 多个exists , 范围检索 , IN检索 , 模糊检索 , 组合 , gin , recheck , filter , subplan 背景 当一个SQL包含复杂的 ...

  6. SQL学习之组合查询(UNION)

    1.大多数的SQL查询只包含从一个或多个表中返回数据的单条SELECT语句,但是,SQL也允许执行多个查询(多条SELECT语句),并将结果作为一个查询结果集返回.这些组合查询通常称为并或复合查询. ...

  7. SQL语句汇总(三)——聚合函数、分组、子查询及组合查询

    聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计 ...

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

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

  9. hibernate 多条件组合查询之sql拼接

    hibernate 多条件组合查询之sql拼接 [java] view plaincopyprint? public static void main(String[] args) { Session ...

最新文章

  1. Linux下安装Redis php-redis扩展 redis重启shell脚本 超详细!
  2. 一篇文章带你了解https是如何做到客户端与服务端之间安全通信
  3. 【Android 插件化】静态分析应用 APK 安装包是否使用了插件化引擎 ( 虚拟化引擎运行特点 | 恶意软件特点 )
  4. Zookeeper分布式集群部署
  5. 淮海工学院linux实验报告三,作业三 实验报告
  6. internal error:failed to get path of 64-bit Program Files directory
  7. axure7.0元件库 安卓_AxureRP 7.0 元件库下载
  8. rpm部署mysql_使用rpm快速安装部署MySQL5.6以及主从设置
  9. idea撤销与恢复快捷键_IntelliJ IDEA 重做快捷键和配置哲学
  10. 【渝粤教育】 广东开放大学 10548_金融学k1_21秋考试
  11. 16进制字符串转化为10进制数
  12. SLAM数据集(1)
  13. 腾讯微信支付支持全量商家小程序场景开通云闪付功能
  14. HTML5画布(矩形)
  15. Airplace平台
  16. java url类下载_Java根据url下载图片或文件的工具类-Fun言
  17. 7.企业安全建设入门(基于开源软件打造企业网络安全) --- 蜜罐与攻击欺骗
  18. grundland去色
  19. 二叉树非递归遍历(先序、中序、后序)(C++)
  20. Python 三大神器:pip,virtualenv(virtualenvwrapper),fabric

热门文章

  1. Android Cordova 对于软键盘弹出后覆盖输入域的解决
  2. (转)失败和拒绝,也是一种肯定
  3. jbpm知识点——tasknode
  4. Mysql:命令选项、配置选项、(全局、会话)系统变量、状态变量:命令选项...
  5. 利用python爬虫与数据分析,打造最强玩法,轻松成为大神级玩家!
  6. 当你用Python爬取网站遇到反爬,你应该这样做,轻松解决反爬问题
  7. telegraf监控mysql数据库_influxdb+grafana+telegraf 监听性能数据 (完整详细版)
  8. step在c语言中什么作用,C语言step-by-step(二)(数据类型)
  9. c 自定义实现string类 clear_基于scala2.13实现自定义的集合类 (下)
  10. layui 常用的css,使用layui xtree插件最基础样式