好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁(yè) > 知識(shí)庫(kù) > mysql中EXISTS和IN的使用方法比較

mysql中EXISTS和IN的使用方法比較

熱門標(biāo)簽:怎樣在地圖標(biāo)注銷售區(qū)域 武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 地圖標(biāo)注費(fèi)用是多少 百應(yīng)電話機(jī)器人優(yōu)勢(shì) 外呼系統(tǒng)打電話上限是多少 啥是企業(yè)400電話辦理 南昌三維地圖標(biāo)注 曲靖移動(dòng)外呼系統(tǒng)公司 電話外呼系統(tǒng)改號(hào)

1、使用方式:

(1)EXISTS用法

select a.batchName,a.projectId from ucsc_project_batch a where EXISTS (select b.id from ucsc_project b where a.projectId = b.id)

上面這條SQL的意思就是:以u(píng)csc_project_batch為主表查詢batchName與projectId字段,其中projectId字段存在于ucsc_project表中。

EXISTS 會(huì)對(duì)外表ucsc_project_batch進(jìn)行循環(huán)查詢匹配,它不在乎后面的內(nèi)表子查詢的返回值是什么,只在乎有沒(méi)有存在返回值,存在返回值,則條件為真,該條數(shù)據(jù)匹配成功,加入查詢結(jié)果集中;如果沒(méi)有返回值,條件為假,丟棄該條數(shù)據(jù)。

例如我們這里改變一下子查詢的查詢返回字段,并不影響外查詢的查詢結(jié)果:

select a.batchName,a.projectId from ucsc_project_batch a where EXISTS (select b.companyId,b.name from ucsc_project b where a.projectId = b.id)

(2)IN用法

select a.batchName,a.projectId from ucsc_project_batch a where a.projectId in (select b.id from ucsc_project b)

上面這條SQL的查詢結(jié)果與剛才的EXISTS的結(jié)果一樣,查詢的意思也一樣。

2、注意點(diǎn):

(1)EXISTS寫法需要注意子查詢中的條件語(yǔ)句一般需要帶上外查詢的表做關(guān)聯(lián),不然子查詢的條件可能會(huì)一直為真,或者一直為假,外查詢的表進(jìn)行循環(huán)匹配的時(shí)候,要么全部都查詢出來(lái),要么一條也沒(méi)有。

select a.batchName,a.projectId from ucsc_project_batch a where EXISTS (select b.id from ucsc_project b)

比如上述這種寫法,由于ucsc_project 表存在值,子查詢的條件一直為真,ucsc_project_batch 每條數(shù)據(jù)進(jìn)行循環(huán)匹配的時(shí)候,都能匹配成功,查詢出來(lái)的結(jié)果就成為了ucsc_project_batch整張表數(shù)據(jù)。

select a.batchName,a.projectId from ucsc_project_batch a where EXISTS (select b.id from ucsc_project b where b.id is null)

這種寫法,子查詢肯定查不到結(jié)果,所以子查詢的條件為假,外查詢的每條數(shù)據(jù)匹配失敗,整個(gè)查詢結(jié)果為空

(2)IN語(yǔ)句在mysql中沒(méi)有參數(shù)個(gè)數(shù)的限制,但是mysql中SQL語(yǔ)句有長(zhǎng)度大小限制,整段最大為4M

(3)EXISTS的子查詢語(yǔ)句不在乎查詢的是什么,只在乎有沒(méi)有結(jié)果集存在,存在則整個(gè)子查詢可以看作一個(gè)條件為真的語(yǔ)句,不然就是一個(gè)條件為假的語(yǔ)句

(4)IN語(yǔ)句對(duì)于子查詢的返回字段只能由一個(gè),不然會(huì)報(bào)錯(cuò):

select a.batchName,a.projectId from ucsc_project_batch a where a.projectId in  (select b.id,b.companyId from ucsc_project b)

[Err] 1241 - Operand should contain 1 column(s)

3、場(chǎng)景選擇

外查詢表大,子查詢表小,選擇IN;外查詢表小,子查詢表大,選擇EXISTS;若兩表差不多大,則差不多。

(1)IN中的SQL查詢只會(huì)查詢一次,然后把結(jié)果集存在臨時(shí)文件中,然后再與外層查詢sql進(jìn)行匹配,其中外查詢與子查詢都可以使用索引

select a.batchName,a.projectId from ucsc_project_batch a where a.projectId in (select b.id from ucsc_project b)

等價(jià)于:

$result = [];
$ucsc_project_batch = "select a.batchName,a.projectId from ucsc_project_batch a";
$ucsc_project = "select b.id from ucsc_project b";
for($i = 0;$i  $ucsc_project_batch .length;$i++){
 for($j = 0;$j  $ucsc_project .length;$j++){
  if($ucsc_project_batch [$i].projectId== $ucsc_project [$j].id){
   $result[] = $ucsc_project_batch [$i];
   break;
  }
 }
}

(2)EXISTS會(huì)對(duì)外查詢的表ucsc_project_batch 進(jìn)行循環(huán)匹配,執(zhí)行ucsc_project_batch.length次,其中子查詢可以使用索引,外查詢?nèi)頀呙?/p>

select a.batchName,a.projectId from ucsc_project_batch a where EXISTS (select b.id from ucsc_project b where a.projectId = b.id)

等價(jià)于:

$result = [];
$ucsc_project_batch = "select a.batchName,a.projectId from ucsc_project_batch a ";
for ($i = 0; $i  $ucsc_project_batch . length; $i++) {
 if (exists($ucsc_project_batch [$i] . projectId)) {//執(zhí)行select b.id from ucsc_project b where a.projectId=b.id        
  $result[] = $ucsc_project_batch [$i];
 }
}

通過(guò)兩個(gè)的偽代碼分析可知:子查詢的表大的時(shí)候,使用EXISTS可以有效減少總的循環(huán)次數(shù)來(lái)提升速度;當(dāng)外查詢的表大的時(shí)候,使用IN可以有效減少對(duì)外查詢表循環(huán)遍歷來(lái)提升速度。

總結(jié)

到此這篇關(guān)于mysql中EXISTS和IN的使用方法比較的文章就介紹到這了,更多相關(guān)mysql EXISTS和IN比較內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL中exists、in及any的基本用法
  • MySQL中in與exists的使用及區(qū)別介紹
  • 對(duì)比分析MySQL語(yǔ)句中的IN 和Exists
  • MySQL exists 和in 詳解及區(qū)別
  • mySQL中in查詢與exists查詢的區(qū)別小結(jié)
  • MYSQL IN 與 EXISTS 的優(yōu)化示例介紹
  • mysql not in、left join、IS NULL、NOT EXISTS 效率問(wèn)題記錄
  • MySQL中in和exists區(qū)別詳解

標(biāo)簽:滄州 吉林 資陽(yáng) 黑河 隨州 甘南 錦州 荊州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql中EXISTS和IN的使用方法比較》,本文關(guān)鍵詞  mysql,中,EXISTS,和,的,使用方法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql中EXISTS和IN的使用方法比較》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于mysql中EXISTS和IN的使用方法比較的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 91嫩草私人成人亚洲影院| 《性史》未删减版| 搡老女人ⅩXXX搡老女小说| 97人妻无码一区二区三区精品免费| 粉粉嫩嫩虎白女一线天视频AV| 一级裸片潘金莲| 巜办公室的呻吟波多野结衣电影 | 中文字幕亚洲无线码高清| 亚洲欧美一区二区三区久久| 成年视频在线播放| 成人一级免费视频| 资中县| 韩国大尺度捏胸吃胸| 91久久偷偷做嫩草影院| 开雏女小嫩苞小说| 爽?好大?快?深点高女攻| www.17c.com国产大片| 久久91亚洲人成电影网站| 欧美日产国产精品视频免费| 欧美色fx性乌克兰| 台湾午夜福利片在线观看| 欧美天天在线| 一二三四高清免费播放| 国产+又大+又黄+又污+无码 | 日韩美女午夜一级A片裸体网站| 男女激吻摸下面过程视频| 操16p| 国产91丝袜在线播放动漫| 喝醉酒被下药后床吻视频| 欲色游乐园高h| github中文社区| 好色艳妇小说| 一男二女无删减版在线观看| 曰本色情影视一区二区本码| boronodrome重口| 成人??色情美女裸体| 男人用j桶女人p| 成人国产精品秘?免费观看动漫| 国模裸体无码XXXX视频Av| 亚洲国产精品无码久久久久久久久| 波多野氏一本二本三本|