gpt4 book ai didi

mysql - 如何选择组及其所有用户,其中组中至少有一个用户在过去 X 天内访问过 MySQL

转载 作者:行者123 更新时间:2023-11-29 19:24:37 25 4
gpt4 key购买 nike

我正在尝试获取组及其所有用户,其中该组中至少有一个用户在至少 14 天内访问过,然后按 group_id、user_id 排序。如果某个群组仅包含超过 14 天的用户,则应完全忽略该群组。

我还希望能够计算每个组有多少用户。

基本上,至少有一名用户在 14 天内访问过,从而使整个群组保持活跃。如果该时间内群组中没有人访问过,则不会显示在群组页面上。

Group Table = groups
+----------+--------------+
| group_id | group_name |
+----------+--------------+
| 1 | first_group |
| 2 | second_group |
| 3 | third_group |
+----------+--------------+


User Table = users
+---------+-----------+----------+---------------------+
| user_id | user_name | group_id | last_visit |
+---------+-----------+----------+---------------------+
| 1 | user1 | 1 | 2017-01-01 12:00:00 |
| 2 | user2 | 3 | 2017-01-01 12:00:00 |
| 3 | user3 | 2 | 2017-01-11 12:00:00 |
| 4 | user4 | 1 | 2017-01-12 12:00:00 |
| 5 | user5 | 3 | 2017-01-12 12:00:00 |
| 6 | user6 | 3 | 2017-01-14 12:00:00 |
+---------+-----------+----------+---------------------+


Desired Output if today's date is 2017-01-16 12:00:00
+----------+-------------+---------+-----------+------------+---------------------+
| group_id | group_name | user_id | user_name | user_count | last_visit |
+----------+-------------+---------+-----------+------------+---------------------+
| 1 | first_group | 1 | user1 | 2 | 2017-01-01 12:00:00 |
| 1 | first_group | 4 | user4 | 2 | 2017-01-12 12:00:00 |
| 3 | third_group | 2 | user2 | 3 | 2017-01-01 12:00:00 |
| 3 | third_group | 5 | user5 | 3 | 2017-01-12 12:00:00 |
| 3 | third_group | 6 | user6 | 3 | 2017-01-14 12:00:00 |
+----------+-------------+---------+-----------+------------+---------------------+

我现在拥有的。这会获取过去 14 天内访问过的用户,但会忽略组中的其余用户。

SELECT
users.user_id, users.user_name,
groups.group_id, groups.group_name
FROM users, groups
WHERE users.last_visit > NOW() - INTERVAL 14 DAY
AND groups.group_id = users.group_id
ORDER BY groups.group_id, users.user_id

最佳答案

你有两个错误:

sers.user_name -> users.user_name

group.group_id = users.user_id -> group.group_id = users.group_id

SELECT
users.user_id, users.user_name,
groups.group_id, groups.group_name
FROM users, groups
WHERE users.last_visit > NOW() - INTERVAL 14 DAY
ORDER BY users.group_id

选择过去 14 天内访问过的所有用户(按用户组 ID 排序)。

您也可以简单地使用 foreach group_id 进行查询来检查过去 14 天内是否至少有 1 个用户访问。

关于mysql - 如何选择组及其所有用户,其中组中至少有一个用户在过去 X 天内访问过 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42240467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com