我不确定标题的正确用词方式,如果一开始不清楚,抱歉。
我要做的是找到已登录到特定页面的用户,而不是其他用户。
我的桌子看起来像这样:
Users_Logins
------------------------------------------------------
| IDLogin | Username | Page | Date | Hour |
|---------|----------|-------|------------|----------|
| 1 | User_1 | Url_1 | 2019-05-11 | 11:02:51 |
| 2 | User_1 | Url_2 | 2019-05-11 | 14:16:21 |
| 3 | User_2 | Url_1 | 2019-05-12 | 08:59:48 |
| 4 | User_2 | Url_1 | 2019-05-12 | 16:36:27 |
| ... | ... | ... | ... | ... |
------------------------------------------------------
如您所见,用户1登录到Url 1和2,但用户2仅登录到Url 1。
我应该如何查找在一段时间内未登录到网址1的用户?
谢谢!
答案 0 :(得分:2)
稍后我将尝试改善您的问题的标题,但是暂时,这是我如何完成您所要求的:
查询:
select distinct username from User_Logins
where page = 'Url_1'
and username not in
(select username from User_Logins
where Page = 'Url_2')
and date BETWEEN '2019-05-12' AND '2019-05-12'
and hour BETWEEN '00:00:00' AND '12:00:00';
返回:
User_2
评论:
答案 1 :(得分:2)
您可以使用group by username
进行操作,并在HAVING
子句中应用条件:
select username
from User_Logins
where
date between '..........' and '..........'
and
hour between '..........' and '..........';
group by username
having
sum(page = 'Url_1') > 0
and
sum(page = 'Url_2') = 0
用所需的日期/时间间隔替换点。