UNION 指令的目的是將兩個 SQL 語句的結果合併起來。 從這個角度來看, UNION 跟 JOIN 有些許類似,因為這兩個指令都可以 由多個表格中擷取資料。 UNION 的一個限制是兩個 SQL 語句所產生 的欄位需要是同樣的資料種類。另外,當我們用 UNION 這個指令 時,我們只會看到不同的資料值 (類似 SELECT DISTINCT)。
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 |
*************************************************************************************
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 |
沒有留言:
張貼留言