天天看點

Ms SQLServer中的Union和Union All的使用方法和差別

Ms SQLServer中的Union和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 的文法如下:

 [SQL 語句 1]

UNION

[SQL 語句 2] 假設我們有以下的兩個表格,

Store_Information 表格
Internet Sales 表格
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

而我們要找出來所有有營業額 (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 表格
Internet Sales 表格
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

而我們要找出有店面營業額以及網絡營業額的日子。要達到這個目的,我們用以下的 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