Mysql SQL列出尚未订购的产品
我遇到的情况是,左连接在我需要完成的事情上做得不够远。我有一个产品表(列为ItemID、ProductName、Price的产品)和一个订单表(列为OrderNumber、ItemID、Quantity的订单) 我需要查询返回products表中当前不属于特定订单一部分的所有产品(例如,列出不属于OrderNumber 52一部分的所有产品) 我当前的查询列出了所有产品,但不包括作为任何OrderNumber一部分的产品Mysql SQL列出尚未订购的产品,mysql,left-join,isnull,Mysql,Left Join,Isnull,我遇到的情况是,左连接在我需要完成的事情上做得不够远。我有一个产品表(列为ItemID、ProductName、Price的产品)和一个订单表(列为OrderNumber、ItemID、Quantity的订单) 我需要查询返回products表中当前不属于特定订单一部分的所有产品(例如,列出不属于OrderNumber 52一部分的所有产品) 我当前的查询列出了所有产品,但不包括作为任何OrderNumber一部分的产品 $query = "SELECT Products.ItemID, Pro
$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";
为此,可以使用反联接,如下所示:
SELECT ItemID, ProductName
FROM Products
WHERE ItemID NOT IN (
SELECT ItemID
FROM Orders
WHERE OrderID = X
)
ORDER BY ProductName
只需在连接条件中添加订单号,即可轻松完成所需操作:
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
反连接代码简单有效。谢谢你的提示。
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