在使用UNION處理查詢時,有幾個要點:
1、所有要進行UNION的查詢,其SELECT列表中列的數量必須相同。如果第一個查詢的列表中有3個列,那么第二個查詢(以及所有進行UNION的后續查詢)的SELECT列表也必須是3個列。
2、為合并的結果集返回的標頭僅取自第一個查詢。如果第一個查詢的SELECT列表類似這樣,SELECT Col1,Col2
AS Second,Col3 FROM...,那么無論后續的查詢中列的名稱或別名如何,UNION返回的列標頭都將分別是Col1、Second以及Col3。
3、一個查詢中每一列的數據類型必須與其他查詢中相同對應的列的數據類型隱式兼容。注意:這里并不是一定要相同----它們只要能隱式轉換即可。如果第一個查詢中第二列的數據類型是char(20),那么第二個查詢中第二列的數據類型是varchar(30)是可以的。然而,由于一切都是基于第一個查詢,因此結果集中第二列所有長度超過20的行將被截斷。
4、與非UNION的查詢不同,UNION的默認返回方式是DISTINCT而非ALL。在其他的查詢中,所有行都將被返回,無論它們是否與別的行有重復,而UNION卻不是這樣的。除非在查詢中使用了ALL關鍵字,否則只返回一個有重復的行。