Re: [SQL ] 新手請教EXISTS語法問題

看板Database (資料庫)作者 (一枝獨秀不是春)時間5年前 (2019/05/12 06:41), 編輯推噓1(105)
留言6則, 2人參與, 5年前最新討論串2/3 (看更多)
※ 引述《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

05/19 16:15, 5年前 , 1F
謝謝你的回覆,不過如果我把()內where的條件全拿掉,得到
05/19 16:15, 1F

05/19 16:19, 5年前 , 2F
的Records數也是29,請問要怎麼解釋這29個Records?先看子
05/19 16:19, 2F

05/19 16:22, 5年前 , 3F
查詢得到的是Products表內全部的ProductsName,應為77筆
05/19 16:22, 3F

05/19 16:26, 5年前 , 4F
還是說WHERE EXISTS後方都不起作用?
05/19 16:26, 4F

06/06 23:27, 5年前 , 5F
你查詢 supplier 表,應該有 29 records 吧。這跟 product
06/06 23:27, 5F

06/06 23:27, 5年前 , 6F
s 表有多少 records 無關
06/06 23:27, 6F
文章代碼(AID): #1Srq-cp0 (Database)
文章代碼(AID): #1Srq-cp0 (Database)