看板 Database 關於我們 聯絡資訊
※ 引述《neweom (新哥)》之銘言: : 在w3schools這題 https://bit.ly/2D7WLmn 範例中 : SELECT SupplierName : FROM Suppliers : WHERE EXISTS (SELECT ProductName FROM Products : WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20); : 會得到 24 個 SupplierName的結果 : 但是如果我改寫成 : SELECT SupplierName : FROM Suppliers : WHERE EXISTS (SELECT ProductName FROM Products,suppliers : WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20); : 會得到 29 個 SupplierName的結果 : 多出來的五筆資料Price都 > 20 : 不知道兩個SQL語法的差別在哪裡,懇請大大指導 下面這一條少了一個內外的KEY join,因為第二個的EXISTS中出現了Supplier Table 所以是括號中的先跑,外面的就沒吃到了。 沒串到key會怎樣? 像第一條的寫法如果像這樣 SELECT SupplierName FROM Suppliers WHERE EXISTS (SELECT ProductName FROM Products WHERE 1=1 //1=1 沒什麼意義 AND Price < 20); Number of Records: 29 條件也是不起作用 第二條想要加Supplier 應該是像這樣 SELECT SupplierName FROM Suppliers s1 WHERE EXISTS (SELECT ProductName FROM Products,suppliers s2 WHERE Products.SupplierID = s2.supplierID AND s1.SupplierID = s2.supplierID AND Price < 20 ); -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.189.35 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1557614502.A.CC0.html
neweom: 謝謝你的回覆,不過如果我把()內where的條件全拿掉,得到 05/19 16:15
neweom: 的Records數也是29,請問要怎麼解釋這29個Records?先看子 05/19 16:19
neweom: 查詢得到的是Products表內全部的ProductsName,應為77筆 05/19 16:22
neweom: 還是說WHERE EXISTS後方都不起作用? 05/19 16:26
ken218: 你查詢 supplier 表,應該有 29 records 吧。這跟 product 06/06 23:27
ken218: s 表有多少 records 無關 06/06 23:27