程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> sqlserver Union和SQL Union All使用方法

sqlserver Union和SQL 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 表格 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 ALLUNION 不同之處在於 UNION ALL 會將每一筆符合條件的資料都列出來,無論資料值有無重復。 UNION ALL 的語法如下: [SQL 語句 1]
UNION ALL
[SQL 語句 2]
我們用和上一頁同樣的例子來顯示出 UNION ALLUNION 的不同。同樣假設我們有以下兩個表格,

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

 eg:
復制代碼 代碼如下:
SELECT id,Name,DocPinYin FROM doctor
UNION
SELECT 0 AS id,'無醫生名' AS Name,'' AS DocPinYin


結果集是

SELECT id,Name,DocPinYin FROM doctor

結果集是

故:union將兩個結果集合在一起

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved