sqlserver union和union all的用法

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

当两个查询集使用union集合运算时,union会删除查询集中重复的记录。

当两个查询集使用union all集合运算时,union all不会删除查询集中重复的记录。

如果合并两个查询集都无重复这个时候unionunion all是等价的,在这种情况下,建议使用union all避免因检索重复带来不必要的开销。

SQL UNION 操作符

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

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

SQL UNION 语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

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

SQL UNION ALL 语法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

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

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

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

[SQL 语句 1]
UNION:

SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales

[SQL 语句 2]

UNION ALL:

SELECT Date FROM Store_Information
UNION ALL
SELECT Date FROM Internet_Sales

UNION不能直接使用order by,非要用的话:

SELECT * FROM (select top(6) * from ttttt where xxxx=0 ORDER BY id ) ta
UNION
SELECT * FROM (select top(6) * from ttttt where xxxx=1 ORDER BY id ) tb

About 智足者富

http://chenpeng.info

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>