我正在尝试返回滞销商品清单。每当有销售时,项目就会写入saleItems表。我想从过去N天内未出现在saleItems表中的清单主表中获取那些项目。这是我的结构。

db_inventory - all inventory items are stored here in stockmain table
db_main - all sale transactions recorded here in saleitems table


以下是给我一个错误的查询

SELECT db_inventory.StockMain.ItemCode
FROM
db_inventory.StockMain
JOIN
db_main.SaleItems
ON
db_main.SaleItems.ItemID=db_inventory.StockMain.ItemCode
WHERE NOT IN(
   SELECT db_main.SaleItems.ItemID FROM db_main.SaleItems
   WHERE db_main.SaleItems.saledate BETWEEN
   DATE_SUB(CURDATE(),INTERVAL 90 DAY) AND NOW()
)

最佳答案

NOT EXISTS与相关子查询一起使用。

SELECT ItemCode
FROM db_inventory.StockMain i
WHERE NOT EXISTS (
    SELECT 1
    FROM db_main.SaleItems m
    WHERE m.ItemID = i.ItemID AND m.saledate > NOW() - INTERVAL 90 DAY
)


子查询可确保对于库存中给定的项目,过去90天内销售表中没有记录。

关于mysql - 滞销库存项目查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58013019/

10-13 00:57