SQL中,select 后的子查詢的一些理解


首先我們假設有表A,B
現在我們想知道A中的所有屬性a,於是我們寫出

select A.a from A;

這個時候,數據庫便會去遍歷A表中的每一行,並將其作為結果輸出,假設A表中有n行,那么最后的結果也就是n行

在此基礎上,如果我們不光想知道的所有的A.a,還有在B表中,有多少行B.a 與 A.a對應的A.b相等,於是我們寫出

select A.a,( select count(*) from B where B.a = A.b ) from A;

數據庫仍然會去遍歷A表中的每一行,對於每一行,子查詢中的A.b也會獲得一個值,用於完成子查詢,子查詢的結果被附在結果集上,被輸出出來
也就是說,select后面的子查詢不會影響結果的行數,只是可以把from后方,表每一行的屬性借來一用

對於exists也是如此,只不過它可以改變結果的數量


免責聲明!

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



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