mysql - MySQL:获取在特定日期之前但未在特定日期之后登录的所有用户,未按预期工作
问题描述
我有以下数据,并且我编写了一个查询来获取之前登录但在给定日期之后未登录的所有用户:
+----+------------------+----------------------+
| id | user_login | date |
+----+------------------+----------------------+
| 1 | longtwin | 2018-03-29 22:15:56 |
| 2 | admin | 2018-03-29 22:16:05 |
| 3 | steve | 2018-06-29 22:19:45 |
| 4 | robinbiundo | 2017-03-29 22:56:13 |
| 5 | shannon | 2017-06-29 23:07:38 |
| 6 | long | 2017-04-29 23:40:58 |
| 7 | longtwin | 2017-04-29 23:41:57 |
| 8 | long | 2017-03-30 02:24:46 |
| 9 | long | 2017-03-30 03:11:48 |
| 10 | abigailrashbaum | 2016-03-30 11:50:43 |
| 11 | timothybrown | 2016-03-30 16:25:59 |
| 12 | timothybrown | 2016-03-30 17:09:27 |
| 13 | timothybrown | 2015-03-30 17:28:44 |
| 14 | timothybrown | 2015-03-30 17:33:06 |
| 15 | steve | 2014-03-30 18:03:46 |
| 16 | steve | 2014-03-30 18:04:48 |
| 17 | steve | 201-03-30 19:16:59 |
+----+------------------+----------------------+
我写了以下 SQL 但结果不是预期的,请纠正我的 SQL 有什么问题?
SELECT p.user_login, COUNT(p.user_login)
FROM wp_login_log_backup p
WHERE p.user_login NOT IN (
SELECT u.user_login
FROM wp_login_log_backup u
WHERE u.date < '2017-04-07 00:00:00'
GROUP BY u.user_login
)
GROUP BY p.user_login;
我应该只得到timothybrown, robinbiundo
该用户没有登录后2017-04-07 00:00:00
解决方案
您可以使用聚合:
select user_login
from wp_login_log_backup llb
group by user_login
having max(date) < '2017-04-07';
推荐阅读
- google-chrome - SSRS 2016 在 Chrome 或 Edge 中设置文件夹安全性不起作用
- css - Material ui react 在具有不同css样式的相同输入上设置两个值
- php - 在 laravel 中更改重定向路径
- hadoop - hadoop distcp 相同的子文件夹名称
- vue.js - Vue路由器导航保护添加中间件模块不起作用
- docker - Docker iptables 阻止除域之外的所有流量
- modelica - 如何提高 Dymola 的收敛性能?
- python - 一系列号码的模糊会员设计
- phaser-framework - 更新 Phaser 3 中的跑步动画
- vba - 从 Word Doc 或 ScreenShot 中提取图像并另存为 JPG