网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Microsoft SQL Server 2005同步复.
.SQL Server数据库文件恢复及数据.
.使你的 SQL 语句完全优化.
.循序渐进讲解Informix SQL的十一.
.SQL Server不允许进行远程连接的.
.Microsoft SQL Server数据库SA权.
.解决SQL速度慢的方法.
.内嵌或嵌入SQL和存储过程之对比.
.SQL Server中多行多列连接成为单.
.在SQL Server数据库中如何减少死.
.带你深入了解数据库管理系统层次.
.在SQL Server 2005数据库中进行错.
.提数据高分页效率.
.SQL Server静态页面导出技术1.
.SQL服务器内存有两种基本管理方法.
.如何在SqlServer与oracel中进行分.
.获取SQL Server的当前连接数.
.SQL关于联合的基本概念和示例.
.50种方法巧妙优化你的SQL Server.
.SQL Server数据库性能的优化.

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

发表日期:2008-3-19


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
上一篇:在SQL Server中获得不包含时间部分的日期 人气:1123
下一篇:如何用SQL写出当M*N时的螺旋矩阵算法 人气:1224
浏览全部SQL Server的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐