1. Union 指令的目的是將兩個 SQL 語句的結果合併起來,能夠查看你須要查詢結果.
例如:
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales
注意:
union用法中,兩個select語句的字段類型匹配,並且字段個數要相同
如上面的例子,在實際的軟件開發過程,會遇到更復雜的狀況,具體請看下面的例子
select '1' as type,FL_ID,FL_CODE,FL_CNAME,FLDA.FL_PARENTID from FLDA
WHERE ZT_ID=2006030002
union
select '2' as type,XM_ID,XM_CODE ,XM_CNAME ,FL_ID from XMDA
where exists (select * from (select FL_ID from FLDA WHERE ZT_ID=2006030002 ) a where XMDA.fl_id=a.fl_id)
order by type,FL_PARENTID ,FL_ID
這個句子的意思是將兩個sql語句union查詢出來,查詢的條件就是看XMDA表中的FL_ID是否和主表FLDA裏的FL_ID值相匹配,(也就是存在).
UNION在進行表連接後會篩選掉重複的記錄,因此在表連接後會對所產生的結果集進行排序運算,刪除重複的記錄再返回結果。
2. 在查詢中會遇到 UNION ALL,它的用法和union同樣,只不過union含有distinct的功能,它會把兩張表了重複的記錄去掉,
而union all不會,因此從效率上,union all 會高一點,但在實際中用到的並非不少.
表頭會用第一個鏈接塊的字段
而UNION ALL只是簡單的將兩個結果合併後就返回。這樣,若是返回的兩個結果集中有重複的數據,那麼返回的結果集就會包含重複的數據了。 從效率上說,UNION ALL 要比UNION快不少,因此,若是能夠確認合併的兩個結果集中不包含重複的數據的話,那麼就使用UNION ALL,以下: 儘可能使用union all,由於union須要進行排序,去除重複記錄,效率低。