MySQL查找过期的付费记录

MySQL查找过期的付费记录,mysql,Mysql,我有以下两个数据成员表,其中包含自动ID为member_ID的成员名称,以及一个paid表,该表存储过期日期和成员ID,以及用于在两个表之间联接的成员名称 我正在尝试执行一个查询,通过选择带有not EXIST子句的2017年付费记录,返回今年未续费的所有会员。但此查询不返回任何结果 SELECT * FROM members , paid WHERE members.member_id = paid.member_id AND paid.year = '2016-12-

我有以下两个数据成员表,其中包含自动ID为member_ID的成员名称,以及一个paid表,该表存储过期日期和成员ID,以及用于在两个表之间联接的成员名称

我正在尝试执行一个查询,通过选择带有not EXIST子句的2017年付费记录,返回今年未续费的所有会员。但此查询不返回任何结果

SELECT * 
  FROM members
     , paid
 WHERE members.member_id = paid.member_id
   AND paid.year = '2016-12-31'
   AND NOT EXISTS ( SELECT members.member_id 
                      FROM members
                         , paid
                     WHERE members.member_id = paid.member_id
                       AND paid.year = '2017-12-31')

我不确定我在这里做错了什么。

我怀疑熟悉联接会有好处。我得到了同样的结果。查询中未返回任何内容。请详细说明“paid.year”这是一个时间戳。因此,每个成员名称都位于members表中,并与paid表中的成员id相连。每年,一名付费会员将获得一份新的日期戳记录。我们想找出谁没有从去年开始续费,这意味着付费表有2016-12-31到期,而不是已经有2017-12-31的会员已经为新的一年付费。因此,如果会员在2017-12-28付款,他的付费年份将是“2017-12-31”或其他什么?是的,我们对所有到期付费记录都使用年底。因此,为了简化此过程,我们在成员表中有成员约翰·安徒生和马克·史密斯。约翰·安徒生是1号会员,马克·史密斯是2号会员。例如,这两项都在付费表中。成员身份1年=2016年12月31日,成员身份1年=2017年12月31日。但是马克·史密斯会员身份证2只有2016-12-31年的有薪年薪,所以我们想找到他。我们基本上是在寻找尚未续约的成员的查询。
 SELECT * 
   FROM members
   JOIN paid
   ON members.member_id = paid.member_id
   WHERE paid.year = '2016-12-31'
   AND members.member_id NOT IN ( SELECT members.member_id 
                      FROM members
                      JOIN paid
                      ON members.member_id = paid.member_id
                      WHERE paid.year = '2017-12-31')