如何使用mysql获取过去两个月内没有访问过的用户记录

时间:2015-07-24 09:35:12

标签: mysql sql

我有两个表用于保存用户会话值,第二个用于保存用户会话访问日志。我在第一次用户访问时保存会话值,之后我只保存访问日志表中的那个会话访问日期&时间。现在我需要获得过去两个月没有访问过的会话记录。

usersessionlog

sessionid
sessionval1
sessionval2

usersessionvisitlog

visitid
sessionid
visitdatetime

如何使用mysql查询获取这些记录。

4 个答案:

答案 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中joinin子句工作得快。

答案 2 :(得分:0)

尝试此查询

select * from usersessionlog where sessionid not in( select sessionid from where visitdatetime >=DATE_SUB(CURDATE(), INTERVAL -2 month))

答案 3 :(得分:0)

如果您使用了当前日期,那么请将其与您可以看到的访问日期进行比较,这些日期超过2个月。

您可能需要查看分解月份以查看每月的天数,或者您可以使用月份部分查看它们是否相隔两个月