MySQL查询以查找至少一次订购的近期未订购的商品
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL查询以查找至少一次订购的近期未订购的商品相关的知识,希望对你有一定的参考价值。
我简化了查询和表格,但为您提供了一些上下文:我有一个“订单”表,其中包含客户订购的所有物品。我想检查历史上至少已订购了哪些物料,但是由于某种原因,没有人再订购它们(在这种情况下为180天,但这只是一个例子)。
SELECT DISTINCT (idItem)
FROM orders
WHERE myDate < DATE_SUB(NOW(),INTERVAL 180 DAY)
AND
(idItem NOT IN
(SELECT
DISTINCT(idItem)
FROM orders
WHERE myDate > DATE_SUB(NOW(),INTERVAL 180 DAY)
)
)
ORDER BY myDate
这是我的理由:我挑选了六个月前订购的所有商品,然后从结果中仅保留在过去六个月中未出现的商品。
我有两个问题:一,它基本上把所有的问题都还给了我,其二,无论“区别”如何,我仍然有很多重复的地方:(
我通常不处理SQL,对于简单的查询我了解得足够多,但是这可能和我可以做到的一样复杂:)
答案
SELECT idItem
FROM orders
GROUP BY idItem
HAVING 0 = SUM(myDate > (CURRENT_DATE - INTERVAL 180 DAY))
?
另一答案
不存在:
SELECT DISTINCT o.idItem
FROM orders o
WHERE NOT EXISTS (
SELECT 1 FROM orders
WHERE idItem = o.idItem AND myDate > DATE_SUB(NOW(), INTERVAL 180 DAY)
)
以上是关于MySQL查询以查找至少一次订购的近期未订购的商品的主要内容,如果未能解决你的问题,请参考以下文章
MySQL - 每个 ID 的 INSERT 或 JOIN 表行