`
jayluns
  • 浏览: 146298 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

(转)union/union all的用法

 
阅读更多

请看一下一个查询的问题  
我有两张表  
tab1  
       字段  
       aID  
       bID  
 
tab2  
       字段  
       aID  
       bID  


tab1中有记录:  
aID    bID  
as1    19  
as2    19  
as3    23  
as4    45  
tab2中有记录:  
aID    bID  
as2    19  
as3    19  
as4    19  


现在需要查找出两张表中bID相等的且bID=19的记录,应该是5条记录  
我用的方法是:  
方法1:select  tab1.aID,tab2.aID  from  tab1,tab2  where  tab1.bID=tab2.bID  and  tab2.bID=19  
方法2:select  tab1.aID,tab2.aID  from  tab1  join  tab2  on  tab1.bID=tab2.bID  where  tab1.bID=19  
上面两中方法选出的记录都是6条,为什么出这样的问题,应该怎么做呢?  
---------------------------------------------------------------  
 
select  *  form  tab1  where  bID=19  
union  all    
select  *  form  tab2  where  bID=19  
 
 
---------------------------------------------------------------  
 
create  table  tab1  
       (aID  char(10),  
       bID  char(10))  
go  
 
insert  into  tab1(aid,bid)  values('as1','19')  
insert  tab1  values('as2','19')  
insert  tab1  values('as3','38')  
insert  tab1  values('as4','45')  
go  
create  table  tab2  
       (aID  char(10),  
       bID  char(10))  
go  
go  
insert  tab2  values('as2','19')  
insert  tab2  values('as3','19')  
insert  tab2  values('as4','19')  
go  
select  *  from  tab1  
 
select  *  from  tab1  where  tab1.bid='19'union  all  select  *  from  tab2    where  tab2.bid='19'  
 
 
斑竹加的话:  
1、join  产生的是笛卡尔积。  
2、union  会排除重复的记录  
3、union  all  不会排除重复的记录

 

union子句
union操作符将两个查询结果合并为一个结果集。为连接查询合并两个表时:列的数日和顺序在查中必须一致;数据类型兼容
语法:
select  语句
union   [ all ]
select  语句
注意:
1 .union运算从最终结果集中删除重复记录,如想不删除重复记录使用all关键字
2 .第一个select语句中不能用order by或compute子句,只能是最后一个select语名后用

例:查询计算机系的学生式年龄不大于19岁的学习,按年龄倒排序
select   *   from  department  where  dept = ' computer ' ;
union ;
 select  
*   from  student  where  age <= 19
order   by  age  desc

分享到:
评论

相关推荐

    union all与order by用法

    UNION ALL 用于合并两个或多个 SELECT 语句的结果集,使用方法是将每个 SELECT 语句用 UNION ALL 连接起来。例如: ```sql SELECT 'china' AS col_1, 'america' AS col_2, 'canada' AS col_3, -1 AS status FROM ...

    sql利用union all行转列

    ### SQL利用UNION ALL进行行转列方法解析 在数据库操作中,经常需要对数据进行各种转换以满足不同的业务需求。其中,“行转列”(Pivot)是一种常见的数据转换方式,它能够将数据表中的某列或多列值转换为多列的...

    SQL语句 UNION 和 UNION ALL 使用

    ### SQL语句 UNION 和 UNION ALL 使用详解 #### 一、SQL UNION 和 UNION ALL 的基本概念 **UNION** 和 **UNION ALL** 是 SQL 语言中用于合并两个或多个 SELECT 语句结果集的关键字。这两种操作符都可以帮助我们...

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

    MySQL UNION 与 UNION ALL 语法与用法 MySQL UNION 语法用于把来自多个 SELECT 语句的结果组合到一个结果集合中。其语法格式为:SELECT column,... FROM table1 UNION[ALL] SELECT column,... FROM table2...其中,...

    Sql中的UNION ALL

    #### UNION ALL 的使用方法 `UNION ALL`的基本语法格式如下: ```sql (SELECT column_name(s) FROM table1) UNION ALL (SELECT column_name(s) FROM table2); ``` 这里的关键在于两个`SELECT`语句必须拥有相同...

    Mssql Union 与 Union All区别,用union还是union all主要看业务需求.docx

    在SQL查询中,`UNION` 和 `UNION ALL` 是两种用于合并多个SELECT语句结果集的方法,它们之间的主要区别在于数据去重处理和性能优化。了解这些概念对于优化SQL查询性能和满足特定的业务需求至关重要。 1. **UNION**...

    UNION ALL 的使用方法

    SELECT ... UNION ALL SELECT C.TRD_NO FROM XXXXXXXXX C WHERE C.CLIENT_CD = W_IN_CLIENT_CD ) D WHERE A.TRD_NO = D.TRD_NO AND A.CLIENT_CD = W_IN_CLIENT_CD AND A.RESULT IS NULL ;

    sql Union和Union All的使用方法

    在SQL中,`UNION`和`UNION ALL`是用来合并多个查询结果的两种方法,它们主要用于处理来自不同数据表的数据。尽管它们的功能相似,但它们在处理重复数据时的行为有所不同。 首先,让我们来理解`UNION`。`UNION`操作...

    使用UNION ALL代替IF语句的合并处理案例

    另一种方法是使用`UNION ALL`将两个查询合并为一个,根据`@Flag`过滤结果。 ```sql SELECT * FROM dbo.A WHERE @Flag = 0 UNION ALL SELECT * FROM dbo.B WHERE @Flag = 1 ``` 乍看之下,`UNION ALL`方法似乎...

    sqlserver Union和SQL Union All使用方法

    理解这两种操作符的使用方法可以帮助你更有效地构建和优化SQL查询。 首先,`UNION`操作符的基本功能是合并两个或更多SELECT语句的结果,但只保留不重复的行。这意味着如果你有两个或多个表的数据源,`UNION`将去除...

    SQL语句之Union和Union All的用法

    在SQL查询中,`UNION` 和 `UNION ALL` 是两种用于合并多个查询结果集的方法,它们在处理数据集合时具有重要的作用。本篇文章将详细介绍这两种操作符的使用及它们之间的区别。 首先,让我们来看一下 `UNION`。`UNION...

    MySQL中UNION与UNION ALL的基本使用方法

    本文将深入探讨这两种操作符的使用方法及其性能差异。 首先,`UNION` 操作符用于合并两个或多个`SELECT`语句的结果,并自动去除重复的行。这意味着,当你使用`UNION`时,最终返回的结果集中不会有重复的记录。例如...

    27.Oracle union多表查询1

    在Oracle数据库中,`UNION` 和 `UNION ALL` 是两种用于合并多个查询结果集的方法,主要应用于多表查询。这两个操作符在处理数据时有着显著的区别。 1. **UNION 操作符** `UNION` 用于合并两个或多个`SELECT`语句的...

    数据库中union 与union all 的区别

    在数据库查询中,`UNION` 和 `UNION ALL` 是两种用于合并多个查询结果集的方法,它们在处理数据合并时具有不同的行为和性能特点。 首先,`UNION` 操作符用于合并两个或更多 `SELECT` 查询的结果,并且会自动去除...

    MySQL如何使用union all获得并集排序

    如果不需要去除重复行,使用`UNION ALL`比`UNION`更有效率,因为它跳过了去重步骤。 在这个例子中,为了满足新的排序需求,我们需要分别处理每个状态,然后再将它们组合起来。我们为每个状态创建一个子查询,每个子...

    5分钟了解MySQL5.7中union all用法的黑科技

    总结以上内容,本文主要讲述了MySQL中UNION ALL用法的基本概念、在不同版本的MySQL中UNION ALL的性能差异,以及如何通过理解执行计划来优化数据库操作。此外,还提到了与MariaDB的对比以及OCR扫描技术可能带来的问题...

    浅析mysql union和union all

    在使用 `UNION` 或 `UNION ALL` 时,有时需要结合其他子句,如 `ORDER BY` 和 `LIMIT` 来控制结果的排序和限制返回的行数。在这种情况下,应该将这些子句放在最后一个 `SELECT` 语句之后,并将整个 `UNION` 语句用...

Global site tag (gtag.js) - Google Analytics