id |
no |
name |
age |
level_no |
1 |
00001 |
a |
25 |
1 |
2 |
00002 |
b |
30 |
2 |
3 |
00003 |
c |
35 |
3 |
4 |
00004 |
d |
45 |
1 |
5 |
00005 |
e |
30 |
2 |
6 |
00006 |
f |
35 |
3 |
7 |
00007 |
g |
25 |
1 |
8 |
00008 |
h |
35 |
2 |
9 |
00009 |
i |
20 |
3 |
10 |
00010 |
j |
25 |
1 |
那么:
(1)“select id from t_user where id6 minus select id from t_user where id between 3 and 7”的結(jié)果將為:
id |
1 |
2 |
(2)“select age,level_no from t_user where id8 minus select age,level_no from t_user where level=3”的結(jié)果為:
age |
level_no |
25 |
1 |
30 |
2 |
45 |
1 |
看到這樣的結(jié)果,可能你會覺得有點奇怪,為何會是這樣呢?我們來分析一下。首先,“select age,level_no from t_user where id8”的結(jié)果將是這樣的:
age |
level_no |
25 |
1 |
30 |
2 |
35 |
3 |
45 |
1 |
30 |
2 |
35 |
3 |
25 |
1 |
然后,“select age,level_no from t_user where level=3”的結(jié)果將是這樣的:
age |
level_no |
35 |
3 |
35 |
3 |
20 |
3 |
然后,直接A minus B之后結(jié)果應當是:
age |
level_no |
25 |
1 |
30 |
2 |
45 |
1 |
30 |
2 |
25 |
1 |
這個時候,我們可以看到結(jié)果集中存在重復的記錄,進行去重后就得到了上述的實際結(jié)果。其實這也很好理解,因為minus的作用就是找出在A中存在,而在B中不存在的記錄。
上述示例都是針對于單表的,很顯然,使用minus進行單表操作是不具備優(yōu)勢的,其通常用于找出A表中的某些字段在B表中不存在對應記錄的情況。比如我們擁有另外一個表t_user2,其擁有和t_user表一樣的表結(jié)構(gòu),那么如下語句可以找出除id外,在t_user表中存在,而在t_user2表中不存在的記錄。
select no,name,age,level_no from t_user minus select no,name,age,level_no from t_user2;
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
標簽:紹興 昭通 自貢 百色 中衛(wèi) 寧波 遼源 海東
巨人網(wǎng)絡通訊聲明:本文標題《Oracle minus用法詳解及應用實例》,本文關鍵詞 Oracle,minus,用法,詳解,及,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。