我有两个表用于保存用户会话值,第二个用于保存用户会话访问日志。我在第一次用户访问时保存会话值,之后我只保存访问日志表中的那个会话访问日期&时间。现在我需要获得过去两个月没有访问过的会话记录。
usersessionlog
sessionid
sessionval1
sessionval2
usersessionvisitlog
visitid
sessionid
visitdatetime
如何使用mysql查询获取这些记录。
答案 0 :(得分:1)
使用NOT EXISTS
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))
答案 1 :(得分:1)
使用左连接:
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
比in
子句工作得快。
答案 2 :(得分:0)
尝试此查询
select * from usersessionlog where sessionid not in( select sessionid from where visitdatetime >=DATE_SUB(CURDATE(), INTERVAL -2 month))
答案 3 :(得分:0)
如果您使用了当前日期,那么请将其与您可以看到的访问日期进行比较,这些日期超过2个月。
您可能需要查看分解月份以查看每月的天数,或者您可以使用月份部分查看它们是否相隔两个月