MYSQL中EXISTS的用法


       語法:SELECT 字段 FROM table WHERE EXISTS(subquery);
       示例:
SELECT * FROM A WHERE EXISTS(SELECT 1 FROM B WHERE B.id = A.id);
Exists執行順序如下:
  1.首先執行一次外部查詢並且緩存結果集——SELECT * FROM A;
  2.遍歷外部查詢結果集的每一條記錄的時候,各執行一次子查詢。
SELECT 1 FROM B WHERE B.id = A.id;
       如果外部查詢返回100行記錄,SQL就將執行101次查詢,一次執行外部查詢,然后為外部查詢返回的每一行執行一次子查詢。顯然,外表小內表大的時候,執行效率非常棒。
 
       EXISTS查詢返回的是什么?一個布爾值true或flase,它只在乎EXISTS()的查詢中是否有記錄,與具體的結果集無關。這也是為什么子查詢里是 "select   1 "的原因,當然也可以select任何東西。它將主查詢的結果集放到子查詢中做驗證,根據驗證結果是true或false來決定主查詢數據結果是否得以保存。
       EXISTS查詢的工作原理是什么?它將外部查詢結果集放到子查詢中做驗證,根據驗證結果是true或false來決定外部查詢數據是否保留。
       NOT EXISTS 的作用與 EXISTS 正相反。如果子查詢沒有返回行,則滿足 NOT EXISTS 中的 WHERE 子句。
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM