2017-01-30 67 views
0

我有以下两个数据成员表,其中包含成员名称,其中包含一个名为member_id的自动ID和一个存储过期日期和member_id的付费表以及两个表之间的连接。MySQL查找过期的付费记录

我试图做一个查询,它将返回所有今年没有续约的成员,通过从NOTEXIST子句中选择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') 

我不知道我在做什么错在这里。

+0

我怀疑熟悉JOIN会带来分红 – Strawberry

回答

1
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') 
+0

我得到了与此相同的结果。查询中没有返回。 – kc3ase

+0

您能否详细说明'paid.year' –

+0

这是时间日期戳记。因此,每个成员名称都在成员表中加入到付费表中的member_id中。每年支付的会员获得新的日期戳记录。我们希望找到去年没有续约的人,这意味着付费表有2016-12-31到期,而不是已经有2017-12-31已支付新年的会员。 – kc3ase