我的情况是LEFT JOIN在我需要完成的事情上还不够远。我有一个产品表(包含ItemID,ProductName,Price 的产品)和一个订单表(包含OrderNumber,ItemID,Quantity 列的订单)。
我需要查询返回Products表中当前不属于特定订单的所有产品(例如,列出不属于OrderNumber 52的所有产品)。
我当前的查询列出了所有产品,但不包括属于任何订单号的产品。
$query = "SELECT Products.ItemID, Products.ProductName
FROM Products
LEFT JOIN Orders
ON Orders.ItemID = Products.ItemID
WHERE Orders.ItemID IS NULL
ORDER BY Products.ProductName";
答案 0 :(得分:1)
您可以为此目的使用反连接,如下所示:
SELECT ItemID, ProductName
FROM Products
WHERE ItemID NOT IN (
SELECT ItemID
FROM Orders
WHERE OrderID = X
)
ORDER BY ProductName
答案 1 :(得分:0)
SELECT Products.ItemID, Products.ProductName
FROM Products
WHERE Products.ItemID not in (select Orders.ItemID from Orders where Orders.OrderNumber = xxx)
ORDER BY Products.ProductName
答案 2 :(得分:0)
只需在加入条件中添加订单号即可轻松完成所需内容:
SELECT Products.ItemID, Products.ProductName
FROM Products
LEFT JOIN Orders
ON (Orders.ItemID = Products.ItemID AND OrderNumber = 52)
WHERE Orders.ItemID IS NULL
ORDER BY Products.ProductName