我的客户数据表如下:
子数据表如下:
现在我尝试访问子数据表中不可用的数据
例如
我要客户按以下条件
1) 今天的日期应该在客户到期日减去(-)2个月内,这意味着访问客户将在两个月后从今天起到期
2) 客户应该是会员而不是管理员
3) 今天系统还没有向特定客户发送通知
4) 通知类型应为“6”
根据以上试验数据
如果今天的日期是2018-01-09,那么结果应该是
第一个客户“jiren”系统已经发送了通知
第一个客户“李”系统已经发送了通知
所以我想要客户id 3和4的结果
我使用了以下查询,但无法正常工作:
SELECT customer_id,customer_token,customer_name,expiry_date
,DATE_FORMAT(`expiry_date` - INTERVAL '2' MONTH, '%Y-%m-%d') AS
ExpireLim,notification_id FROM customer
LEFT JOIN notification ON customer.customer_id = notification.no_customer_id
WHERE customer_token != '' AND no_type = '6'
AND DATE_FORMAT(no_date,'%Y-%m-%d') = '2018-01-09'
AND customer_token != 'device_token' AND is_member = 1
AND CURRENT_DATE = `expiry_date` - INTERVAL '2' MONTH
AND is_admin = 0
1条答案
按热度按时间4ngedf3f1#
不要加入。如果您想知道是否存在通知,请使用
EXISTS
或者IN
条款。我想是的
notification.customer_id
不能为空。所以你可以用更简单的NOT IN
而不是NOT EXISTS
:你可能得调整到期条款。我把它理解为从现在到现在的期限+2个月。这包括时间。也许你更愿意
date(expiry_date)
. 顺便说一句,月长不是一个精确的概念;2月1日至3月1日的时间比3月1日至4月1日的时间短。也许你想把这条规定改为60天之类的。