iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0

簡單理解可以把它視為

while(condition){
    statement;
}

https://ithelp.ithome.com.tw/upload/images/20220913/201519177xE60foh6m.jpg

當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後方語句是否有問題


上一篇
為甚麼編碼要追求高內聚與低耦合
下一篇
為甚麼char的array輸出的不是Memory Address
系列文
寫寫歷年職場經歷過的大小事或近期所學習的知識啟發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言