溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SQL中Union的用法示例

發(fā)布時(shí)間:2021-01-15 11:01:30 來源:億速云 閱讀:397 作者:小新 欄目:數(shù)據(jù)庫

小編給大家分享一下SQL中Union的用法示例,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

sql union用法是什么?

sql union用法的總結(jié):

UNION 運(yùn)算符將多個(gè) SELECT 語句的結(jié)果組合成一個(gè)結(jié)果集。

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

B:對(duì)應(yīng)列的數(shù)據(jù)類型可以不同但是必須兼容(所謂的兼容是指兩種類型之間可以進(jìn)行隱式轉(zhuǎn)換,不能進(jìn)行隱式轉(zhuǎn)換則報(bào)錯(cuò))。也可以用顯式轉(zhuǎn)換為相同的數(shù)據(jù)類型。

(當(dāng)數(shù)據(jù)類型不同時(shí),則根據(jù)數(shù)據(jù)類型優(yōu)先級(jí)規(guī)則確定所產(chǎn)生的數(shù)據(jù)類型。如果類型相同,但精度、小數(shù)位數(shù)或長度不同,則根據(jù)用于合并表達(dá)式的相同規(guī)則來確定結(jié)果)(參照MSDN:數(shù)據(jù)類型優(yōu)先級(jí))

C:如果為XML數(shù)據(jù)類型則列必須等價(jià)(所有列都必須類型化為 XML 架構(gòu),或者為非類型化),如果類型化,這些列必須類型化為相同的 XML 架構(gòu)集合。

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

B:UNION默認(rèn)的刪除結(jié)果集中重復(fù)的記錄,如果使用 ALL 關(guān)鍵字則在結(jié)果集中保留所有記錄(保留重復(fù)記錄)

(3)注意點(diǎn)
A: Transact-SQL 語句中可以使用多個(gè) UNION 運(yùn)算符

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

C:在使用了 UNION 運(yùn)算符的各個(gè) SELECT 語句中可以使用 GROUP BY 和 HAVING 子句。

D:默認(rèn)情況下,SQL Server 2005 從左向右對(duì)包含 UNION 運(yùn)算符的語句求值??墒褂脠A括號(hào)指定求值順序。

MSDN 例子如下

例如,以下語句并不等價(jià):

/* 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

看完了這篇文章,相信你對(duì)“SQL中Union的用法示例”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI