我想從下表中獲取訂購至少兩個產品的客戶。該表是:左加入包含分組的查詢
Customer(Id, Name, City),
Product(Id, Name, Price),
Orders(Customer_Id, Product_Id, Date)
我使用查詢
select c.*
from customer c
join orders o on o.customer_id = c.id
group by c.id
having count(o.customer_id) >= 2
它返回預期的結果,但是當我LEFT JOIN
更換JOIN
它仍然提供了相同的結果。它不會按照LEFT JOIN
的規定返回Customer表的所有行。爲什麼LEFT JOIN
的功能限制在這個場合?由於有人無法區分來自匹配的結果和僅出現在左側表格中的結果?
您正在表'orders'上使用過濾器嗎? (這是你正在使用的''',基本上使'left join'成爲'內部連接' – Lamak 2013-05-14 17:43:18
你是否有一個可以證明這一點的樣本數據? – Woot4Moo 2013-05-14 17:43:51
如果你只對至少有兩種產品的客戶感興趣爲什麼你想要一個左連接?這將保留零訂單的客戶(然後你消除在'有') – 2013-05-14 17:49:09