科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道深入讲解SQL Union和Union All的使用方法

深入讲解SQL Union和Union All的使用方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

UNION指令的目的是将两个SQL语句的结果合并起来。从这个角度来看,我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料。

作者:赛迪网 李思 来源:天新网 2008年3月22日

关键字: SQL Server 数据库 Mssql SQL

  • 评论
  • 分享微博
  • 分享邮件

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

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

  而我们要找出来所有有营业额 (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" 的话,那我们会得到完全一样的结果。

  SQL Union All

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

  UNION ALL

  [SQL 语句 2] 我们用和上一页同样的例子来显示出 UNION ALL 和 UNION 的不同。同样假设我们有以下两个表格:   

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 

============

表1 
A   B
a   1
b   0
c   3
d   0
e   2
表2
A   B
c   0
e   4

  合并两个表除去重复的数据(以表2的数据为主),我们将会得到以下的表:  

A   B
a   1
b   0
c   0
d   0
e   4 

select A,B from 表1 where A not in(select A from 表2)
union
select A,B from 表2
    • 评论
    • 分享微博
    • 分享邮件
    闂傚倸鍊风欢锟犲矗鎼淬劌绐楅柡鍥╁亹閺嬪酣鏌曡箛瀣仾濠殿垰銈搁弻鏇$疀鐎n亖鍋撻弽顓ㄧ稏闁跨噦鎷�

    婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓涢悾娲⒑闂堟单鍫ュ疾濠婂嫭鍙忔繝濠傜墛閸嬨劍銇勯弽銊с€掗柟钘夊暣閺岀喖鎮滈埡鍌涚彋閻庤娲樺畝绋跨暦閸洖鐓涢柛灞剧矋濞堟悂姊绘担绛嬪殐闁搞劋鍗冲畷銏ゅ冀椤愩儱小闂佹寧绋戠€氼參宕伴崱妯镐簻闁靛牆鎳庢慨顒€鈹戦埥鍡椾簼婵犮垺锚铻炴俊銈呮噺閸嬪倹绻涢崱妯诲碍閻庢艾顦甸弻宥堫檨闁告挾鍠庨锝夘敆娓氬﹦鐭楁繛鎾村焹閸嬫捇鏌e☉娆愬磳闁哄本绋戦埞鎴﹀川椤曞懏鈻婄紓鍌欑劍椤ㄥ懘鎯岄崒鐐靛祦閹兼番鍔岄悞鍨亜閹烘垵顏╅悗姘槹閵囧嫰寮介妸褎鍣ョ紓浣筋嚙濡繈寮婚悢纰辨晣鐟滃秹鎮橀懠顒傜<閺夊牄鍔庣粻鐐烘煛鐏炶姤鍠橀柡浣瑰姍瀹曠喖顢橀悩铏钒闂備浇宕垫慨鎶芥⒔瀹ュ鍨傞柦妯猴級閿濆绀嬫い鏍ㄧ☉濞堟粓姊虹涵鍛【妞ゎ偅娲熼崺鈧い鎺嗗亾闁挎洩濡囧Σ鎰板籍閸繄顓洪梺缁樺姇瀵剙螖閸涱喚鍘搁梺鍓插亽閸嬪嫰鎮橀敃鍌涚厱閻庯綆鍋嗘晶顒傜磼閸屾稑绗ч柟鐟板閹煎湱鎲撮崟闈涙櫏闂傚倷绀侀幖顐も偓姘卞厴瀹曞綊鏌嗗鍛紱閻庡箍鍎遍ˇ浼村磿瀹ュ鐓曢柡鍥ュ妼婢ь垰霉閻樿秮顏堟箒闂佹寧绻傚Λ妤呭煝閺囥垺鐓冪憸婊堝礈濮樿泛钃熼柕濞у嫷鍋ㄩ梺缁樺姇椤曨參鍩㈤弴銏″€甸柨婵嗗€瑰▍鍥ㄣ亜韫囨稐鎲鹃柡灞炬礋瀹曢亶顢橀悢濂変紦

    重磅专题
    往期文章
    最新文章