MySQL-显示尚未更新产品的人

时间:2018-07-31 04:43:01

标签: mysql

好,让我尽我所能解释一下。我需要为尚未续订某种产品(有效期为1年)的用户生成报告。我们称这个会员资格。

我只需要为每个“ client_no”提取最近的行,这些行与产品编号字符串匹配。我不希望提取重复的“ client_no”记录,但是可以有多个不同的“ product_id”。

查询:

SELECT * FROM client_educational 
WHERE product_id IN ('1', '2', '3') 
AND order_date < DATE_SUB(CURDATE(),INTERVAL 1 YEAR);

数据库设计:

client_no    product          order_date

54321        Membership 3     2018-04-15
12345        Membership 2     2017-04-15
12345        Membership 1     2016-04-15
58428        Membership 2     2015-04-15
58428        Membership 1     2014-04-15

当前结果:

client_no    product          order_date

12345        Membership 2     2017-04-15
12345        Membership 1     2016-04-15
58428        Membership 2     2015-04-15
58428        Membership 1     2014-04-15

所需的输出:

client_no    product          order_date

12345        Membership 2     2017-04-15
58428        Membership 2     2015-04-15

1 个答案:

答案 0 :(得分:0)

请检查以下查询。 嵌套查询条件是淘汰过去1年内有订单的客户。

SELECT c.* FROM client_educational c 
WHERE c.product_id IN ('1', '2', '3') 
AND c.order_date < DATE_SUB(CURDATE(),INTERVAL 1 YEAR)
AND c.client_no NOT IN 
 (
  SELECT client_no FROM client_educational 
  WHERE product_id IN ('1', '2', '3') 
  AND order_date >= DATE_SUB(CURDATE(),INTERVAL 1 YEAR)
 )
group by c.client_no order by c.order_date desc