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