我正在尝试查看是否可以在 mysql 中执行特定查询,而不必求助于基于应用程序的过滤和多个查询。
基本上,我有一个客户表,我有一个每个人的证书表(包括那些不是我的客户)
每个客户可以有多个证书,我在每个证书上都有到期日期。
我希望能够选择那些证书即将到期(在 2 周或更短时间内)并且没有另一个到期日期更长的证书的客户。
第一部分很简单,我在两个表之间执行基于 ssn 的内部连接,其中 where 子句指定从现在到现在 + 2 周的日期终止日期,如下所示:
select certs.ssn, certs.cert_num, certs.cert_start, certs.cert_finish
from certs
INNER JOIN customers ON certs.ssn = customers.ssn
where certs.cert_finish < Date_ADD(now(), INTERVAL 14 DAY)
and certs.cert_finish > now()
但是,我找不到排除那些拥有其他证书有效期较长的客户的方法。
你们有什么想法吗?我正在考虑基于 max(cert_finish) 的子查询,仅针对上一个查询返回的那些 ssns。