我有一個查詢與Oracle中的一個CTE中的聯合。我試圖在我們的數據庫中獲得一個名爲P的字段的總和,並在我寫作我的視圖時檢查以確保該值是準確的。我發現甲骨文在處理一個不尋常的方式將這些查詢加入工會CTE中的聯盟刪除記錄,但沒有重複
with CTE_A as
(select P, 'full' as coverage from Table_A),
CTE_B as
(select P, 'partial' as coverage from Table_A)
在這裏,如果我select sum(P) from CTE_A
我得到100。但是,如果我後執行下列操作:
CTE_C as
(select P, coverage from CTE_A
union
select P, coverage from CTE_B)
select sum(P) from CTE_C where coverage='full'
我得到78
當我使用union時,我再次得到100。我知道聯合會刪除重複項,但是CTE_A和CTE_B中應該沒有重複項,因爲我聲明瞭現場報道。
UNION刪除**所有**重複項,包括那些已經存在於每個操作數(表)中的重複項 - 而不僅僅是那些在表之間重複的重複項。 – mathguy