Re: [SQL ] 新手請教EXISTS語法問題
※ 引述《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
05/19 16:15, 1F
→
05/19 16:19,
5年前
, 2F
05/19 16:19, 2F
→
05/19 16:22,
5年前
, 3F
05/19 16:22, 3F
→
05/19 16:26,
5年前
, 4F
05/19 16:26, 4F
→
06/06 23:27,
5年前
, 5F
06/06 23:27, 5F
→
06/06 23:27,
5年前
, 6F
06/06 23:27, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章