zl程序教程

您现在的位置是:首页 >  后端

当前栏目

sqlserverUnion和SQLUnionAll使用方法

方法 使用
2023-06-13 09:14:24 时间

SQLUNION操作符

UNION操作符用于合并两个或多个SELECT语句的结果集。

请注意,UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。

SQLUNION语法
SELECTcolumn_name(s)FROMtable_name1
UNION
SELECTcolumn_name(s)FROMtable_name2

注释:默认地,UNION操作符选取不同的值,即UNION是去了重的。如果允许重复的值,请使用UNIONALL

SQLUNIONALL语法
SELECTcolumn_name(s)FROMtable_name1
UNIONALL
SELECTcolumn_name(s)FROMtable_name2

另外,UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。

UNION指令的目的是将两个SQL语句的结果合并起来。从这个角度来看,UNION跟JOIN有些许类似,因为这两个指令都可以由多个表格中撷取资料。union只是将两个结果联结起来一起显示,并不是联结两个表…………UNION的语法如下:

 [SQL语句1]
UNION
[SQL语句2]
假设我们有以下的两个表格,

Store_Information表格 store_name Sales Date LosAngeles $1500 Jan-05-1999 SanDiego $250 Jan-07-1999 LosAngeles $300 Jan-08-1999 Boston $700 Jan-08-1999 InternetSales表格 Date Sales Jan-07-1999 $250 Jan-10-1999 $535 Jan-11-1999 $320 Jan-12-1999 $750

而我们要找出来所有有营业额(sales)的日子。要达到这个目的,我们用以下的SQL语句:SELECTDateFROMStore_Information
UNION
SELECTDateFROMInternet_Sales
结果:

Date Jan-05-1999 Jan-07-1999 Jan-08-1999 Jan-10-1999 Jan-11-1999 Jan-12-1999

有一点值得注意的是,如果我们在任何一个SQL语句(或是两句都一起)用"SELECTDISTINCTDate"的话,那我们会得到完全一样的结果。

SQLUnionAll
UNIONALL这个指令的目的也是要将两个SQL语句的结果合并在一起。UNIONALLUNION不同之处在于UNIONALL会将每一笔符合条件的资料都列出来,无论资料值有无重复。UNIONALL的语法如下:[SQL语句1]
UNIONALL
[SQL语句2]
我们用和上一页同样的例子来显示出UNIONALLUNION的不同。同样假设我们有以下两个表格,

Store_Information表格 store_name Sales Date LosAngeles $1500 Jan-05-1999 SanDiego $250 Jan-07-1999 LosAngeles $300 Jan-08-1999 Boston $700 Jan-08-1999 InternetSales表格 Date Sales Jan-07-1999 $250 Jan-10-1999 $535 Jan-11-1999 $320 Jan-12-1999 $750

而我们要找出有店面营业额以及网络营业额的日子。要达到这个目的,我们用以下的SQL语句:SELECTDateFROMStore_Information
UNIONALL
SELECTDateFROMInternet_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

 eg:

复制代码代码如下:

SELECTid,Name,DocPinYinFROMdoctor
UNION
SELECT0ASid,"无医生名"ASName,""ASDocPinYin


结果集是

SELECTid,Name,DocPinYinFROMdoctor

结果集是

故:union将两个结果集合在一起