UNION 運算子是將兩個或更多查詢的結果組合為單個結果集
該結果集包含聯集查詢中的所有查詢的全部行。這與使用聯結組合兩個表中的列不同。
使用 UNION 組合查詢的結果集有兩個最基本的規則:
1。所有查詢中的列數和列的順序必須相同。
2。資料類型必須相容
a.UNION的結果集列名與第一個select語句中的結果集中的列名相同,其他select語句的結果集列名被忽略
b.預設情況下,UNION 運算子是從結果集中重複資料刪除行。如果使用all關鍵字,那麼結果集將包含所有行並且不重複資料刪除行
c.sql是從左至右對包含UNION 運算子的語句進行取值,使用括弧可以改變求值順序
--例如:
select * from tablea
union all
(
select * from tableb
union all
select * from tablec
)
這樣就可以先對tableb和tablec合并,再合并tablea
d.如果要將合并後的結果集儲存到一個新資料表中,那麼into語句必須加入到第一條select中
e.只可以在最後一條select語句中使用 order by 和 compute 子句,這樣影響到最終合并結果的排序和計數匯總
f.group by 和 having 子句可以在單獨一個select查詢中使用,它們不影響最終結果
--例如:
select name as 姓名,class as 班級,grade as 年級
into #students
from stud87
union all
select * from stud88
union all
select * from stud89
order by 年級
將3個班級的合并結果(按grade排序)插入到暫存資料表 #students裡面
希望上面提到的知識對你有所提示
當然歡迎交流和指正
author:aierong
blog:http://www.cnblogs.com/aierong
email:aierong@126.com