我知道類似這樣的問題之前已經被問到過,但我還沒有看到超過2個表中的一個。似乎有區別。SQL EXISTS返回所有行,超過兩個表
我有我需要的字段,三個表customers
我需要customerID
和orderID
來自orders
從中我得到customerID
和orderID
和lineitems
從中我得到orderID
和quantity
(=訂購的數量)。
我想找出有多少客戶購買了超過2相同的項目,所以基本上數量> 2:
SELECT COUNT(DISTINCT custID)
FROM customers
WHERE EXISTS(
SELECT *
FROM customers C, orders O, lineitems L
WHERE C.custID = O.custID AND O.orderID = L.orderID AND L.quantity > 2
);
我不明白爲什麼它返回了我所有的行數。我在檢查> 2條件之前關聯了子查詢,我不是嗎?
我是一名SQL初學者,所以我會很感激你能否從根本上解釋它,如果有必要的話。謝謝。
所以錯誤是由重複客戶造成的?或者使用'JOIN'而不是'FROM ... WHERE ...'在使用多個表時也有所作爲? – sandboxj
@sandboxj是的錯誤是由於客戶再次使用表:這是錯誤的關聯的想法。最好在上面的查詢中使用現代的'JOIN'語法,而不是使用逗號分隔表的舊式語法。 –