簡單理解可以把它視為
while(condition){
statement;
}
當WHERE EXISTS後方連接的條件為false,則系統不會執行WHERE EXISTS前方的語句
但當WHERE EXISTS後方連接的條件為true,則系統輸出的資料要依據WHERE inner_codition條件式有所不同
當inner_codition條件式與WHERE EXISTS前方的語句有關則會輸出交集的結果
利用w3schools測試
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price = 22);
EXISTS後方語句會找到ProductName滿足Products.SupplierID = Suppliers.supplierID AND Price = 22的值為Chef Anton's Cajun Seasoning得知它的SupplierID為2,再通過Suppliers.supplierID=2得到最終答案
當inner_codition條件式與WHERE EXISTS前方的語句無關則會輸出WHERE EXISTS前方的語句查詢結果
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Price = 22);
所以如果今天是用EXISTS處理但查詢出的資料與預想的不同就可以試著分解EXISTS後方語句是否有問題