sql server 中union的用法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 中union的用法?相关的知识,希望对你有一定的参考价值。

分为union与union all
union 缺省在合并结果集后消除重复项,
union all 指定在合并结果集后保留重复项,
打个比喻吧 比如A表的数据是 A 1,4,5,9 B2,3,4,5
那我执行此语句 select * from A union select * from B 那结果是1,2,3,4,5,9
如果执行select * from A union all select * from B 结果是1,2,3,4,4,5,5,9
你看下结果就知道他们的区别了 这样应该比较容易明白 看不懂再问我
参考技术A select * from student 专业='计算机'
union
select * from student 专业='英语'

--上面这个命令中的union表示将两个select查询结果合并。追问

为什么我们做的相同项用 '' 代替呢
select GradeName,'',sum(ClassHour)
from Grade
inner join Subject on Subject.GradeId=Grade.GradeId
group by GradeName
union
select GradeName,SubjectName,ClassHour
from Grade
inner join Subject on Subject.GradeId=Grade.GradeId

参考技术B 使用union all 处理

UNION 附带一个 排序的操作. 需要把相同的记录合并掉.

UNION ALL 不排序。

select szdxmlb='收入项目',szdxm,sum(szdjf),sum(szddf) from szd group by szdxm
UNION ALL select '合计:','',sum(szdjf),sum(szddf) from szd今后一起共勉!欢迎到CSDN,365testing,测评网看看CAG。365testing.com。CAG

SQL中MINUS的用法与UNION的用法

一:MINUS指令

其是运用在两个 SQL 语句上。
它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL语句的结果中。
如果有的话,那第一个SQL结果数据就被去除,而不会在最后的结果中出现。
如果第一个 SQL 语句所产生的结果并没有存在于第二个 SQL 语句所产生的结果内,
那第一个SQL结果数据就被保留,会在最后的结果中出现。
MINUS 的语法如下:
[SQL 语句 1]
MINUS
[SQL 语句 2]
举例:
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
MINUS
SELECT Date FROM Internet_Sales
结果:
Date
Jan-05-1999
Jan-08-1999


解释:
"Jan-05-1999", "Jan-07-1999", and "Jan-08-1999" 是 "SELECT Date FROM Store_Information" 所产生的结果。
在这里面,"Jan-07-1999" 是存在于 "SELECT Date FROM Internet_Sales" 所产生的结果中。
因此 "Jan-07-1999" 并不在最后的结果中。
请注意,在 MINUS 指令下,不同的值只会被列出一次。


与MINUS功能类似的有
第一个
SELECT   表1.*    
FROM     表1,   表2
WHERE    表1.主键=表2.主键(+)  
AND   表2.主键   IS   NULL;
第二个
select   *   from   表1   where   not   exists(select   1   from   表2   where   表1.主键=表2.主键);
第三个
select   *   from   表1   where   表1.主键 not   in (select  主键   from   表2);
当然效率较高的还是MINUS。

二:UNION 指令

其是将两个 SQL 语句的结果合并起来。
从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。
UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。
另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。
UNION 的语法如下:
[SQL 语句 1]
UNION
[SQL 语句 2]


举例:
表格: 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
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" 的话,
那我们会得到完全一样的结果。
名字可以不一样。但是,数据类型必须相似。
也就是说主表(第一个表)第一列是varchar(100),副表(第一个以外的所有表)的第一列都要是varchar(100&&<100)
(char好像也可以,或是可以自动转换数据类型),其它是不行的,还有几个表的列数必须相同。

备注:随笔内容来源于网上资料整理,仅供参考。























































































以上是关于sql server 中union的用法?的主要内容,如果未能解决你的问题,请参考以下文章

sql server 交集,差集的用法 (集合运算)

sql 中union all有啥用法

sql 查询结果合并union all用法_数据库技巧

数据库中union的用法

SQL中MINUS的用法与UNION的用法

SQL Union和SQL Union All用法