2014-04-13 54 views
0

我遇到Oracle減查詢問題。如果我的查詢是這樣的Oracle減號查詢

select col1 from 
(select '1' col1 from dual 
union 
select '2' col1 from dual) 
minus 
select col1 from 
(select '1' col1 from dual 
); 

結果如預期2。但是如果我在查詢1之後插入一個分號如下

select col1 from 
(select '1' col1 from dual 
union 
select '2' col1 from dual); 
minus 
select col1 from 
(select '1' col1 from dual 
); 

結果是1.可以有人解釋爲什麼Result是這樣的。我使用PL/SQL開發人員

+1

當你把一個分號。這意味着查詢已完成。所以你的工具只是執行你的查詢,直到那個!相反,當你選擇整個查詢然後執行時,你只會得到一個語法錯誤! –

+0

oracleUser:那麼查詢應該導致1,2爲什麼它只導致1.並且它沒有給出Sysntax錯誤。 –

回答

3

當你把分號後首先選擇就意味着選擇完成後,有你有兩個分開的選擇

first select is:

select col1 from 
(select '1' col1 from dual 
union 
select '2' col1 from dual); 

,並返回1 and 2

the second is:

minus 
select col1 from 
(select '1' col1 from dual 
); 

minus沒有得到任何意義在這個部分,但選擇可以運行和返回1

有你剛剛從第二部分運行查詢,看看1爲你的結果。

+0

太好了。它實際上忽略了PL/SQL開發人員的「減」運算語句,並在兩個tabs.I中給出了結果。我在第一個選項卡中遺漏了結果。 –