MySQL-显示尚未更新产品的用户

MySQL-显示尚未更新产品的用户,mysql,Mysql,好吧,让我尽力解释一下。我需要生成一个报告的人,还没有更新的某个产品到期1年。我们称之为会员 我只需要为每个客户提取最新的行,这些行与一系列产品编号相匹配。我不想重复的客户没有记录被拉,但可以有多个不同的产品ID 查询: SELECT * FROM client_educational WHERE product_id IN ('1', '2', '3') AND order_date < DATE_SUB(CURDATE(),INTERVAL 1 YEAR); 目前的结果: cli

好吧,让我尽力解释一下。我需要生成一个报告的人,还没有更新的某个产品到期1年。我们称之为会员

我只需要为每个客户提取最新的行,这些行与一系列产品编号相匹配。我不想重复的客户没有记录被拉,但可以有多个不同的产品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

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年内有订单的客户机

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

嘿@Tanvir,谢谢你的回复。这似乎在很大程度上起了作用。。。然而,我注意到一些新产品正在渗透进来。例如,用户在2017年1月24日购买了产品编号1,然后在2018年3月4日再次购买了产品编号1。如果订单日期不到一年,我们是否可以让它完全不显示这些产品id?如果我需要提供更多信息,请告诉我。@Jon-我已经编辑了查询。条件中的嵌套查询应该可以防止在一年内拉取带有订单的客户机。
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