我有两个表。一个由客户和另一个由产品,他们已经购买:选择所有客户,除非他们有其他产品 - SQL
表客户
CustID, Name
1, Tom
2, Lisa
3, Fred
表产品
CustID, Item
1, Toaster
1, Breadbox
2, Toaster
3, Toaster
我想获得所有买了一个烤面包机的客户,除非他们还买了一个面包箱。
所以我曾尝试以下:
SELECT * FROM Customer
JOIN Product
ON Customer.CustID=Product.CustID
WHERE Product in
(SELECT
Item
FROM Product
WHERE (Item = 'Toaster' AND Item != 'Breadbox'));
和:
SELECT * FROM Customer
INNER Join Product
ON Customer.CustID=PRODUCT.CustID
WHERE Product.Item = 'Toaster'
AND Product.Item NOT IN ('Breadbox');
但都给出了相同的结果,其中包括汤姆,这不已经拥有一个面包盒。
我该如何确保只有拥有烤面包机但不拥有面包箱的客户才能上市?
如果可能的话,此查询将返回没有产品的客户,因此在我看来您想要内连接。如果可能有多个烤面包机,这也会多次列出客户。 – shawnt00
我试过查询,它的工作正确,你能举个例子吗? @ shawnt00 – wajeeh
我的不好。我误解了“where”作为连接条件的一部分。但是,你真的不如写'内部连接',因为这就是你会得到的。 – shawnt00