濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > Oracle minus用法詳解及應(yīng)用實(shí)例

Oracle minus用法詳解及應(yīng)用實(shí)例

熱門標(biāo)簽:電話機(jī)器人那種好 外呼系統(tǒng)好點(diǎn)子 百度地圖標(biāo)注飯店位置怎么 南通電銷外呼系統(tǒng)哪家強(qiáng) 區(qū)域地圖標(biāo)注怎么設(shè)置 理財(cái)產(chǎn)品電銷機(jī)器人 地圖標(biāo)注的坐標(biāo)點(diǎn) 百度地圖標(biāo)注注解 上海網(wǎng)絡(luò)外呼系統(tǒng)

Oracle minus用法

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

       Oracle的minus是按列進(jìn)行比較的,所以A能夠minus B的前提條件是結(jié)果集A和結(jié)果集B需要有相同的列數(shù),且相同列索引的列具有相同的數(shù)據(jù)類型。此外,Oracle會(huì)對(duì)minus后的結(jié)果集進(jìn)行去重,即如果A中原本多條相同的記錄數(shù)在進(jìn)行A minus B后將會(huì)只剩一條對(duì)應(yīng)的記錄,具體情況請(qǐng)看下面的示例。

        下面我們來看一個(gè)minus實(shí)際應(yīng)用的示例,假設(shè)我們有一張用戶表t_user,其中有如下記錄數(shù)據(jù):

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é)果,可能你會(huì)覺得有點(diǎn)奇怪,為何會(huì)是這樣呢?我們來分析一下。首先,“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é)果應(yīng)當(dāng)是:

age

level_no

25

1

30

2

45

1

30

2

25

1

       這個(gè)時(shí)候,我們可以看到結(jié)果集中存在重復(fù)的記錄,進(jìn)行去重后就得到了上述的實(shí)際結(jié)果。其實(shí)這也很好理解,因?yàn)閙inus的作用就是找出在A中存在,而在B中不存在的記錄。

       上述示例都是針對(duì)于單表的,很顯然,使用minus進(jìn)行單表操作是不具備優(yōu)勢(shì)的,其通常用于找出A表中的某些字段在B表中不存在對(duì)應(yīng)記錄的情況。比如我們擁有另外一個(gè)表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;

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:
  • oracle數(shù)據(jù)庫中sql%notfound的用法詳解
  • Oracle中的INSTR,NVL和SUBSTR函數(shù)的用法詳解
  • oracle數(shù)據(jù)庫定時(shí)任務(wù)dbms_job的用法詳解
  • Oracle存儲(chǔ)過程游標(biāo)用法分析
  • Oracle開發(fā)之分析函數(shù)簡(jiǎn)介Over用法
  • 講解Oracle數(shù)據(jù)庫中的數(shù)據(jù)字典及相關(guān)SQL查詢用法
  • Oracle中游標(biāo)Cursor基本用法詳解

標(biāo)簽:紹興 昭通 自貢 百色 中衛(wèi) 寧波 遼源 海東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle minus用法詳解及應(yīng)用實(shí)例》,本文關(guān)鍵詞  Oracle,minus,用法,詳解,及,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Oracle minus用法詳解及應(yīng)用實(shí)例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Oracle minus用法詳解及應(yīng)用實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    乌鲁木齐县| 赫章县| 汝南县| 长春市| 辽阳市| 尼勒克县| 嘉祥县| 新巴尔虎右旗| 汾西县| 阿瓦提县| 商水县| 平陆县| 黔江区| 贵阳市| 城口县| 邵东县| 无为县| 巍山| 宁国市| 晋城| 江西省| 平原县| 长顺县| 双峰县| 涿州市| 凉山| 房产| 泾阳县| 仙桃市| 辽中县| 旬邑县| 怀来县| 云龙县| 长葛市| 贵南县| 道孚县| 永吉县| 山阳县| 三门县| 黄石市| 永州市|