首頁  >  文章  >  資料庫  >  SQL Union用法是什麼?

SQL Union用法是什麼?

coldplay.xixi
coldplay.xixi原創
2020-06-09 16:21:319840瀏覽

SQL Union用法是什麼?

sql union用法是什麼?

sql union用法的總結:

UNION 運算子將多個 SELECT 語句的結果組合成一個結果集。

(1)使用 UNION 須滿足以下條件:
A:所有查詢中必須具有相同的結構(即查詢中的的列數和列的順序必須相同)。

B:對應列的資料型別可以不同但是必須相容(所謂的相容是指兩種型別之間可以進行隱式轉換,不能進行隱式轉換則報錯)。也可以用明確轉換為相同的資料型別。

(當資料類型不同時,則根據資料類型優先權規則確定所產生的資料類型。如果類型相同,但精確度、小數位數或長度不同,則根據用於合併表達式的相同規則來決定結果)(參考MSDN:資料型別優先權)

C:若為XML資料型別則列必須等價(所有欄位都必須類型化為XML 架構,或為非型別),如果類型化,這些欄位必須類型化為相同的XML 架構集合。

(2)UNION結果集
A:UNION 後的結果集的列名與 第一個 SELECT 語句的結果集中的列名相同。另一個 SELECT 語句的結果集列名將被忽略。

B:UNION預設的刪除結果集中重複的記錄,如果使用ALL 關鍵字則在結果集中保留所有記錄(保留重複記錄)

(3)注意點
#A : Transact-SQL 語句中可以使用多個UNION 運算子

B:在使用了UNION 運算子的各個SELECT 語句不能包含它們自己的ORDER BY 或COMPUTE 子句。而只能在最終的組合結果集(即最後一個 SELECT 語句的後面)使用一個 ORDER BY 或 COMPUTE 子句。

C:在使用了 UNION 運算子的各個 SELECT 語句中可以使用 GROUP BY 和 HAVING 子句。

 

D:預設情況下,SQL Server 2005 會從左向右對包含 UNION 運算子的語句求值。可使用圓括號指定求值順序。

MSDN 範例如下

例如,以下語句並不等價:

/* First statement. */ 
  SELECT * FROM TableA 
  UNION ALL 
 ( SELECT * FROM TableB 
  UNION 
 SELECT * FROM TableC 
 ) 
 GO 
 /* Second statement. */ 
 (SELECT * FROM TableA 
 UNION ALL 
 SELECT * FROM TableB 
 ) 
 UNION 
 SELECT * FROM TableC) 
 GO

推薦教學:《SQL影片教學

以上是SQL Union用法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn