我正在尝试返回一个移动缓慢的库存项目列表。只要有促销活动,这些商品就会被写入saleItems表。我想从inventoryMaster表中获取那些在过去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()
)发布于 2019-09-19 22:28:14
对相关子查询使用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
)子查询确保,对于库存中的给定商品,sales表中在过去90天内不存在任何记录。
https://stackoverflow.com/questions/58013019
复制相似问题