關(guān)于如何在SQL中使用EXISTS這個(gè)問(wèn)題很多朋友還不知道,今天小六來(lái)為大家解答以上的問(wèn)題,現(xiàn)在讓我們一起來(lái)看看吧!
1、語(yǔ)法EXISTS?subquery?參數(shù)subquery是一個(gè)受限的?SELECT?語(yǔ)句?(不允許有?COMPUTE?子句和?INTO?關(guān)鍵字)。
2、有關(guān)更多信息,請(qǐng)參見(jiàn)?Select中有關(guān)子查詢(xún)的討論。
3、?結(jié)果類(lèi)型Boolean?結(jié)果值如果子查詢(xún)包含行,則返回?TRUE。
4、?說(shuō)明?EXISTS(包括?NOT?EXISTS?)子句的返回值是一個(gè)BOOL值。
5、?EXISTS內(nèi)部有一個(gè)子查詢(xún)語(yǔ)句(SELECT?...?FROM...),?我將其稱(chēng)為EXIST的內(nèi)查詢(xún)語(yǔ)句。
6、其內(nèi)查詢(xún)語(yǔ)句返回一個(gè)結(jié)果集。
7、?EXISTS子句根據(jù)其內(nèi)查詢(xún)語(yǔ)句的結(jié)果集空或者非空,返回一個(gè)布爾值。
8、一種通俗的可以理解為:將外查詢(xún)表的每一行,代入內(nèi)查詢(xún)作為檢驗(yàn),如果內(nèi)查詢(xún)返回的結(jié)果取非空值,則EXISTS子句返回TRUE,這一行行可作為外查詢(xún)的結(jié)果行,否則不能作為結(jié)果。
9、?Exists是子查詢(xún)的一種條件形式,通過(guò)判斷Exists的選擇表達(dá)式(括號(hào)內(nèi)的部分)的結(jié)果,如果存在一行或多行結(jié)果記錄,則Exists整個(gè)子查詢(xún)結(jié)果為真,否則為假。
10、由于我們采用Exists來(lái)實(shí)現(xiàn)子查詢(xún),只需要關(guān)心是否存在滿(mǎn)足條件的記錄,所以選擇表達(dá)式的選擇列表采用*來(lái)實(shí)現(xiàn),當(dāng)然,你也可以在選擇列表指明具體的某些列,但這些列將在整個(gè)搜索過(guò)程中被忽略。
11、?Exists實(shí)例?SQL?代碼???復(fù)制select??Resc_id??from??***.res_Coachwhere??EXISTS?(select?*?from??Res_Coach??where??Resc_id??is??null)查詢(xún)?cè)恚罕闅v***.res_Coach每一條,同時(shí)處理where條件(EXISTS?(select?*?from?Res_Coach?where?Resc_id=0)?判斷結(jié)果為true或者false),為true時(shí)拿出該條,false時(shí),放棄該條記錄。
12、?SQL?代碼???復(fù)制--???where條件中的子查詢(xún)和主查詢(xún)沒(méi)關(guān)系select??Resc_idfrom??***.res_Coachwhere??EXISTS?(select??Rese_id??from??***.res_Excellent??where??Rese_id??Is??null?)--?2、??where條件中得子查詢(xún)和主查詢(xún)有關(guān)系select??Resc_idfrom??***.res_Coachwhere??EXISTS?(select??Resc_id??from??***.res_Coach??where??Resc_id??Is??null?)實(shí)例備注:不管where條件中得子查詢(xún)和主查詢(xún)有沒(méi)有關(guān)系,遍歷主查詢(xún)中得每一條時(shí),判斷where條件,exists結(jié)果為真,where條件返回true,拿出該條記錄,where條件返回false,?不返回該記錄。
13、?Exists?和?In?的選擇?如果查詢(xún)的兩個(gè)表大小相當(dāng),那么用in和exists差別不大。
14、如果兩個(gè)表中一個(gè)較小,一個(gè)是大表,則子查詢(xún)表大的用exists,子查詢(xún)表小的用in。
本文分享完畢,希望對(duì)大家有所幫助。
標(biāo)簽:
免責(zé)聲明:本文由用戶(hù)上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!