首頁  >  文章  >  php教程  >  Oracle minus用法詳解及應用實例

Oracle minus用法詳解及應用實例

高洛峰
高洛峰原創
2017-01-06 10:59:342065瀏覽

Oracle minus用法

       「minus」直接翻譯為中文是「減」的意思,在Oracle中也是用來做減法操作的,只不過它不是傳統意義上對數字的減法,而是對查詢結果集的減法。 A minus B就意味著將結果集A去除結果集B中所包含的所有記錄後的結果,即在A中存在,而在B中不存在的記錄。其演算法跟Java中的Collection的removeAll()類似,即A minus B將只去除A跟B的交集部分,對於B中存在而A中不存在的記錄不會做任何操作,也不會拋出異常。

       Oracle的minus是按列進行比較的,所以A能夠minus B的前提條件是結果集A和結果集B需要有相同的列數,且相同列索引的列具有相同的資料類型。此外,Oracle會對minus後的結果集進行去重,也就是如果A中原本多筆相同的記錄數在進行A minus B後將會只剩下一筆對應的記錄,具體情況請看下面的範例。

        以下我們來看一個minus實際應用的範例,假設我們有一個使用者表t_user,其中有下列記錄資料:

Oracle minus用法详解及应用实例

 那麼:

inus(1)「userselect 5 id from t_user where id between 3 and 7」的結果將為:

Oracle minus用法详解及应用实例

(2)「select age,level_no from t_user where id

Oracle minus用法详解及应用实例

 看到這樣的結果,可能你會覺得有點奇怪,為何會是這樣呢?我們來分析一下。首先,「select age,level_no from t_user where id

Oracle minus用法详解及应用实例

 然後,「select age,level_no from t_user where level=3」的結果將會是這樣的:

Oracle minus用法详解及应用实例

然後,直接A minus B之後結果應當是:

Oracle minus用法详解及应用实例

       這個時候,我們可以看到結果集中存在重複的記錄,進行去重後就得到了上述的實際結果。其實這也很好理解,因為minus的作用就是找出在A中存在,而B中不存在的記錄。

       上述範例都是針對於單表的,很顯然,使用minus進行單表操作是不具備優勢的,其通常用於找出A表中的某些字段在B表中不存在對應記錄的情況。例如我們擁有另外一個表t_user2,其擁有和t_user表一樣的表結構,那麼如下語句可以找出除id外,在t_user表中存在,而在t_user2表中不存在的記錄。

select no,name,age,level_no from t_user minus select no,name,age,level_no from t_user2;

感謝閱讀,希望能幫助大家,謝謝大家對本站的支持!

更多Oracle minus用法詳解及應用實例相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn