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

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

(1)在一个查询中从不同的表返回结构数据

(2)对一个执行多个查询,按一个查询返回数据

2、使用UNION

使用UNION很简单,所要做的只是给出每条SELECT语句,然后再每条SELECT语句之间加上UNION关键字,这样所给出的SELECT结果集就能组合成一个结果集并返回。代码如下:

select * from dbo.Customers_1

现在有个需求,需要检索出位于浙江和上海,或者顾客名称为Fun4All的所有顾客,下面是通过WhERE子句完成的解决代码:

select *
from dbo.Customers_1
where Province in('浙江','上海') or Company='Fun4All'

ok,通过Where子句的OR操作符完成需求!

下面通过组合查询UNION操作符来完成需求,代码如下:

select *
from dbo.Customers_1
where Province in('浙江','上海')
select *
from dbo.Customers_1
where Company='Fun4All'

这是没有使用UNION的单独查询,一共有6条记录,如果是普通的结果集组合的话会出现6条记录,我们发现其中有两条记录是重复的

在看使用了UNION组合查询关键字的查询解决代码:

select *
from dbo.Customers_1
where Province in('浙江','上海')
UNION
select *
from dbo.Customers_1
where Company='Fun4All'

ok,完成需求,通过和上面没有使用UNION关键的分开查询相比,我们发现UNION(组合查询)从结果集中去除了重复的行。

这里我们可以使用UNION ALL,告诉DBMS不取消重复的行。那么效果就和上面没加UNION的一样

3、总结

分析上面完成需求的连个例子,我们发现对于上面的简单的例子使用UNION似乎比WHERE子句更加的复杂。但是这里你需要知道,如果对于较复杂的过滤条件,或者从多个表(而不是一个表)中检索数据的情形,使用UNION可能会使处理更加的简单。

4、使用UNION必须知道的规则(使用注意事项)

(1)使用UNION必须有两条或者两条以上的SELECT语句组成,语句之间用UNION关键字分割

(2)使用UNION关联的每个子查询必须包含相同的检索列、表达式或这聚集函数(次序可以不一样)

(3)列数据类型必须兼容;类型不必完全相同,但必须是DBMS可以隐含转换的类型(不同的数值类型或者不同的日期类型)

(4)UNION几乎总是完成与多个WHERE条件相同的工作,UNION ALL是UNION的一种形式,它完成WHERE子句完成不了的工作,因为他将返回每个条件的匹配行(包括重复行)

(5)使用组合查询,当需要对结果进行排序是,只能指定一条Order By语句,这条语句只能放在最后一天SELECT语句的后面.

转载于:https://www.cnblogs.com/GreenLeaves/p/5825930.html

SQL学习之组合查询(UNION)相关推荐

  1. SQL学习笔记14- 组合查询

    组合查询 大多数SQL只返回单条SELECT语句,但有些SQL语句允许从多条SELECT中查询结果并返回,称为组合查询.两种情况需要用到: 在一个查询中从不同的表返回结构数据 对一个表执行多个查询,按 ...

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

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

  3. SQL组合查询union

    对一个表执行多个查询,按一个查询返回数据: select 属性集合0 form 表0 where 逻辑组合0 union select 属性集合0form 表0 where 逻辑组合1 等价于 sel ...

  4. MySQL入门学习:组合查询

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

  5. 《MySQL必知必会》学习笔记——组合查询、全文本搜索

    文章目录 第17章 组合查询 1. 创建组合查询 2. UNION规则 3. 包含或取消重复的行 4. 对组合查询结果排序 第18章 全文本搜索 1. 理解全文本搜索 2. 使用全文本搜索 2.1 启 ...

  6. 11.组合查询union

    mysql也允许执行多个查询(多条select语句),并将结果作为单个查询结果集返回. 这些组合查询通常称为并(union)或复合查询(compound query). 就是拼接查询结果在一个表上面 ...

  7. 组合查询——union

    文章目录 1.组合查询 2.创建组合查询 2.1 使用union 2.2 union规则 2.3 包含或取消重复的行 2.4 对组合查询结果排序 1.组合查询 组合查询指的是:在Mysql中执行多个查 ...

  8. SQL数据库的组合查询和统计查询

    数据库的组合查询和统计查询 一.实验目的 对数据库进行组合查询和统计查询 二.实验内容 1.加深对SQL语言查询语句的理解 2.熟练掌握数据查询中的分组统计.计算和组合操作方法. 三.实验要求 在本题 ...

  9. 【ES】JavaAPI学习-07 组合查询 范围查询

    前言 本节主要实现条件查询中的组合查询,范围查询 实现 编写组合查询 ESTest_Doc_Cond_Query_Com.java package com.zwy.es;import org.apac ...

最新文章

  1. unity 脚本中 调用另一个脚本_Unity 2019.4 脚本生命周期
  2. Oracle笔记(3):数据库启动原理
  3. 【DSP复习主要知识点】(大概)
  4. LeetCode 348. 判定井字棋胜负(计数)
  5. 未来,边缘计算的功能支柱是 Kubernetes
  6. React学习整理(一):React 安装
  7. 用迭代法求方程cos(y)-y=0的一个实根
  8. (二)面向对象设计原则
  9. 分享Visual SVN Hook Script—— 允许客户端编辑SVN log message
  10. 基于C语言的图形化编程软件,图形化编程工具
  11. matlab使用xlsread报错,matlab的IO操作复习
  12. java 整理快捷键_idea快捷键整理
  13. 解决ubuntu无法连接网络问题
  14. java交通调度,java毕业设计_springboot框架的的车辆调度管理系统
  15. JAVA的Properties集合
  16. Java: 实训三 类与对象、继承
  17. Linux中延时/暂停函数(sleep/usleep/nanosleep/select)的比较、底层实现说明
  18. error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0
  19. [LeetCode]91.Decode Ways
  20. JS基础 将字符串数组用|或其他符号分割

热门文章

  1. 给机器学习从业者的 12 条建议
  2. SAP MM MIGO界面里的'Delivery completed'标记
  3. 干货 | 请收下这份2018学习清单:150个最好的机器学习,NLP和Python教程
  4. 干货丨三大特征选择策略,有效提升你的机器学习水准
  5. UC伯克利发现「没有免费午餐定理」加强版:每个神经网络,都是一个高维向量...
  6. 【前沿技术】2021年AI将改变制造业的6大应用趋势
  7. 只有这种AI芯片才能拯救人工智能?
  8. FPGA的历史、现状和未来
  9. 一文看懂机器视觉芯片
  10. 奇点、技术失控与技术启示录