我有下表:
我正在尝试找到一种方法来获取那些已过期的客户的记录,然后相应地更新表(通过更新我的意思是添加一条新记录,其中包含相关客户的 customer_id 条目)。
如果您查看表的底部,您会注意到两条记录,其中包含已存在客户的条目“SERVICE EXPIRED”(customer_id 11 和 16)。
我正在寻找一个 SQL 查询,它将:
- 通过 customer_id 获取最后一组不同的记录
- 从结果集中排除相同 customer_id 的记录,这些记录具有条目“SERVICE EXPIRED”或 status_id 为 2 稍后出现在表中
如果我使用以下内容:
SELECT MAX(id) FROM mytable WHERE status_id != '2' AND expiry < '2012-12-26 19:00:00' GROUP BY customer_id
它将返回 ids 1、11、13 和 16。但是,我不想要 ids 11 和 16,因为表中已经在后面注明了到期状态(请参阅表的最后两条记录)和 id从 id 3 中更新的到期日期可以看出,1 已更新。我想要的只是 id 13,因为这是唯一没有在表中稍后出现的“SERVICE EXPIRED”条目的过期记录。
我正在寻找一个 SQL 查询,它可以让我捕捉到这个需求。
提前致谢