UNION 將兩個或更多查詢的結果集結合成單一結果集(縱向連結資料),個人覺得 UNION 最好用的地方在於連接歷史資料庫,尤其是習慣把每一年資料拆成一個 Table 來整理,EX:Order98、Order99。
SQL UNION 使用限制:
- 欄位數目和順序需要一致
- 欄位資料型態必須相容(隱含式轉換)
VFP UNION 使用限制:
- 除了上述限制外,在 8.0 和 9.0 版本裡假如資料行有 Memo 資料型態,一定要用 UNION ALL,用 UNION 會錯誤,8.0 之前版本則是沒有這個限制。
SQL、VFP UNION 使用上需要注意的地方:
- UNION 和 UNION ALL的差異:UNION 會自動過濾重複資料,而 UNION ALL 則是會把全部資料都列出來;因為 UNION 會過濾重覆資料,所以在效率上,UNION ALL會比較快一些。
- 欄位名稱以第一個資料集為依據。
- Order By 必須放在整個 T-SQL 語法的最後。
-- 建立範例資料
DECLARE @NY table (EmployeeID char(4),Employee char(8),Birthday datetime)
DECLARE @TW table (EmployeeID char(4),Employee char(8),Birthday datetime)
-- Ray 和 Doris 這兩個人名,同時存在 @TW 和 @NY 中
INSERT INTO @NY VALUES('NY01','Emma','19860606')
INSERT INTO @NY VALUES('NY02','Ray','19840404')
INSERT INTO @NY VALUES('NY03','Doris','19870707')
INSERT INTO @NY VALUES('NY04','Peggie','19890909')
INSERT INTO @NY VALUES('NY05','Angel','19810101')
INSERT INTO @TW VALUES('TW01','Terry','19901010')
INSERT INTO @TW VALUES('TW02','Ray','19820202')
INSERT INTO @TW VALUES('TW03','Doris','19830303')
INSERT INTO @TW VALUES('TW04','Fanny','19880808')
INSERT INTO @TW VALUES('TW05','Jarry','19850505')