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 表行

java web 编程实现 用户在购买商品24小时内未付款,商品自动重新上架。麻烦解释详细点,谢谢。

商品订购及货物采购信息系统(需求分析)

MySQL查询订购两列,一个ASC另一个DESC

订购超过 200,500 件商品时给予指定折扣

MySQL从不订购的客户