1.UNION的作用

 UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。 union只是将两个结果联结起来一起显示,并不是联结两个表………… UNION 的语法如下: [SQL 语句 1]
  假设我们有以下的两个表格,Store_Information 表格
    store_name  Sales  Date
  Los Angeles $1500 Jan-05-1999
  San Diego   $250   Jan-07-1999
  Los Angeles $300  Jan-08-1999
  Boston         $700  Jan-08-1999
 
  Internet Sales 表格
  Date              Sales
  Jan-07-1999 $250
  Jan-10-1999 $535
  Jan-11-1999 $320
  Jan-12-1999 $750
 
 而我们要找出来所有有营业额 (sales) 的日子。要达到这个目的,我们用以下的 SQL 语句:
  SELECT Date FROM Store_Information UNION SELECT Date FROM Internet_Sales 结果: Date
   Jan-05-1999
   Jan-07-1999
   Jan-08-1999
   Jan-10-1999
   Jan-11-1999
   Jan-12-1999
有一点值得注意的是,如果我们在任何一个 SQL 语句 (或是两句都一起) 用 "SELECT DISTINCT Date" 的话,那我们会得到完全一样的结果。

2. Union All
UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。 UNION ALL 的语法如下: [SQL 语句 1]

同样假设我们有以下两个表格, Store_Information 表格
    store_name  Sales  Date
  Los Angeles $1500 Jan-05-1999
  San Diego   $250   Jan-07-1999
  Los Angeles $300  Jan-08-1999
  Boston         $700  Jan-08-1999
 
  Internet Sales 表格
  Date              Sales
  Jan-07-1999 $250
  Jan-10-1999 $535
  Jan-11-1999 $320
  Jan-12-1999 $750
 
 而我们要找出有店面营业额以及网络营业额的日子。要达到这个目的,我们用以下的 SQL 语句:
  SELECT Date FROM Store_Information UNION ALL SELECT Date FROM Internet_Sales 结果: Date
  Jan-05-1999
  Jan-07-1999
  Jan-08-1999
  Jan-08-1999
  Jan-07-1999
  Jan-10-1999
        Jan-11-1999
        Jan-12-1999

3.更多sql示例
   --合并重复行
 select * from A
 union
 select * from B
 
 
 --不合并重复行
 select * from A
 union all
 select * from B
 
 
 按某个字段排序
 --合并重复行
 select *
 from (
 select * from A
 union
 select * from B) AS T
 order by 字段名
 
 --不合并重复行
 select *
 from (
 select * from A
 union all
 select * from B) AS T
 order by 字段名

//sql server(WINDOWS平台上强大的数据库平台)版
  Select * From (
  select top 2 id,adddate,title,url from bArticle where ClassId='1' order by adddate desc) A
  Union All
  Select * From (
  select top 2 id,adddate,title,url from bArticle where ClassId='2' order by adddate desc) B
  Union All
  Select * From (
  select top 2 id,adddate,title,url from bArticle where ClassId='3' order by adddate desc) C
  Union All
  Select * From (
  select top 2 id,adddate,title,url from bArticle where ClassId='4' order by adddate desc) D
  
  
  //MySQL(和PHP搭配之最佳组合)版
  Select * From (
  select id,adddate,title,url from bArticle where ClassId='1' order by adddate desc limit 0,2) A
  Union All
  Select * From (
  select id,adddate,title,url from bArticle where ClassId='2' order by adddate desc limit 0,2) B
  Union All
  Select * From (
  select id,adddate,title,url from bArticle where ClassId='3' order by adddate desc limit 0,2) C
  Union All
  Select * From (
  select id,adddate,title,url from bArticle where ClassId='4' order by adddate desc limit 0,2) D

SQL使用union合并查询结果(转载)的更多相关文章

  1. SQL多表合并查询结果

    两表合并查询,并同时展示及分页SELECT a.* FROM ( ( SELECT punycode, `domain`, 'Success' AS state, add_time, AS refun ...

  2. 7-11使用UNION合并查询

    合并查询的语法: SELECT ...FROM  表名一 UNION SELECT ...FROM 表名二 合并查询的特点: 1: 合并表中的列的个数,数据类型数据类型相同或兼容. 2:UNION 默 ...

  3. 使用union合并查询

    语法: select …..from 表1 union select ……from 表2 2. 合并查询的特点 ① 合并的表中的列的个数.数据类型必须相同或向兼容. ② union默认去掉重复值,如果 ...

  4. sql 用union合并合并查询结果

    合并操作与连接相似,因为他们都是将两个表合并起来的另一个表的方法,然而他们的合并方法有本质的区别, 合并是两个表的相加,连接时时两个表的相乘: 01 在合并中两个表原列的数量与数据类型必须相同:在连接 ...

  5. 数据库原理实验指导(三)使用SQL语言进行简单查询【转载csdn】

    --1.查询全体学生的学号和姓名select sno,sname from student --2.查询全体学生的详细记录select * from student --3.查询软件学院的学生姓名,年 ...

  6. 2个或多个datable类似于sql inner join 合并查询

    public static DataTable DatableInnerJoin(DataTable FirstTB, DataTable SecondTB, DataColumn[] FJC, Da ...

  7. Linq连接查询之左连接、右连接、内连接、全连接、交叉连接、Union合并、Concat连接、Intersect相交、Except与非查询

    内连接查询 内连接与SqL中inner join一样,即找出两个序列的交集 Model1Container model = new Model1Container(); //内连接 var query ...

  8. mysql 中合并查询结果union用法 or、in与union all 的查询效率

    mysql 中合并查询结果union用法 or.in与union all 的查询效率 (2016-05-09 11:18:23) 转载▼ 标签: mysql union or in 分类: mysql ...

  9. oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by

    select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...

随机推荐

  1. 如何查看Linux操作系统的位数

    如何查看Linux操作系统的位数 1.编程实现: 在程序中返回sizeof(int)的值,返回的结果是操作系统的字节数.若返回4则是32位操作系统,返回8即是64位. 2.2.getconf命令: g ...

  2. js与php中一些相似函数的对比

    一:substr js中:stringObject.substr(start,length)   一个中文算一个字符,一个英文也算一个字符 <script type="text/jav ...

  3. hdoj 1026 Ignatius and the Princess I 最小步数,并且保存路径

    Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  4. Ubuntu下单网卡多IP地址的配置

    删除用户默认配置文件 由于在默认清空下,配置文件是系统自动生成的用户设备配置文件保存在/etc/udev/rule.d/下面:# cp /etc/udev/rule.d /etc/udev/rule. ...

  5. 【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装

    其实这是之前Michael_z 5篇文章的集合,但作者做了一些补充 参考重要安装文档:http://www.cnblogs.com/Michael_z/category/322108.html(本博客 ...

  6. oracle ORA-12545:因目标主机或对象不存在

    解决方法: 1.首先从最基本的入手,这里打开计算机右击,选择管理 2. 找到里面的服务和应用程序,打开服务 3.找到: OracleOraDb11g_home1TNSListener OracleSe ...

  7. Django QuerySet 方法梳理 。model外键 多对多的保存

    引用:https://feifeiyum.github.io/2017/03/28/python-django-queryset/ 说明 Models 层是 Django 框架中最强大的部分之一, 大 ...

  8. Java 之泛型通配符 ? extends T 与 ? super T 解惑

    简述 大家在平时的工作学习中, 肯定会见过不少如下的语句: List<? super T> List<? extends T> 我们都知道, 上面的代码时关于 Java 泛型的 ...

  9. 在ORACLE中如何将一个表中某字段值合计与另一个表的某字段值相减

    现在有两个表,A表字段AMOUNT为发票金额,B表字段REV为收款金额,两表通过字段id关联,需将A表的字段AMOUNT与B表的字段REV相减, 但是A表表示的发票可能对应多个B表的收款金额,如何将A ...

  10. Linux kernel 之 uart 驱动解析

    uart 是一种非常之常见的总线,比如DEBUG信息输出,小数据量数据传输,485,以及蓝牙的控制,GPS,很多都是通过uart 进行数据传输并进行控制. 在Linux kernel 内部,uart ...