我有以下查询来检查客户订阅。这不是查询中正确的方法,但我不知道如何优化或纠正它。在这里。
SELECT sub_id FROM subscription
WHERE start_date = CURDATE()
AND end_date > CURDATE()
AND sub_id NOT IN (SELECT DISTINCT sub_id FROM subscription
WHERE start_date < CURDATE());
子查询的原因是筛选出以前至少订阅sub_id。
你不需要SELECT DISTINCT sub_id FROM subscription WHERE start_date < CURDATE()
子查询 - 你已经有条件start_date = CURDATE()
.
SELECT sub_id FROM subscription
WHERE start_date = CURDATE()
AND end_date > CURDATE()
此查询将选择从CURDATE()
日开始并在将来的某一天停止的所有订阅。