如何获取不使用';在过去的两个月里,我没有访问过mysql
我有两个表,一个用于保存用户会话值,另一个用于保存用户会话访问日志。当用户第一次访问时,我保存会话值,之后我只将该会话的访问保存在visitlog表中,并带有日期和时间。现在我需要得到那些在过去两个月内没有访问过的会话记录 usersessionlog如何获取不使用';在过去的两个月里,我没有访问过mysql,mysql,sql,Mysql,Sql,我有两个表,一个用于保存用户会话值,另一个用于保存用户会话访问日志。当用户第一次访问时,我保存会话值,之后我只将该会话的访问保存在visitlog表中,并带有日期和时间。现在我需要得到那些在过去两个月内没有访问过的会话记录 usersessionlog sessionid sessionval1 sessionval2 visitid sessionid visitdatetime usersessionvisitlog sessionid sessionval1 sessionval2
sessionid
sessionval1
sessionval2
visitid
sessionid
visitdatetime
usersessionvisitlog
sessionid
sessionval1
sessionval2
visitid
sessionid
visitdatetime
如何使用mysql查询获取这些记录。试试这个查询
select * from usersessionlog where sessionid not in( select sessionid from where visitdatetime >=DATE_SUB(CURDATE(), INTERVAL -2 month))
用途不存在
select t1.sessionid from usersessionlog as t1 where not exists
(select * from usersessionvisitlog as t2 where t1.sessionid =t2.sessionid
and visitdatetime>=date_add(current_date,interval -2 month))
如果您也使用了当前日期,那么将其与访问日期进行比较,您可以看到访问日期超过2个月 您可能需要查看月份的细分情况,以查看每个月有多少天,或者您可以使用“月份”部分查看它们是否相隔两个月使用“左联接”:
select sessionid from usersessionlog sl left join usersessionvisitlog vl
on sl.sessionid = vl.sessionid and visitdatetime > now() - interval 2 month
where vl.sessionid is null
通常在MySQL中,join
比子句中的工作得更快