gpt4 book ai didi

MySQL - 发现没有活跃用户

转载 作者:行者123 更新时间:2023-11-29 13:16:58 25 4
gpt4 key购买 nike

也许这听起来很简单,但问题是。

我的一些用户可以在每次散步时添加步数。每次他们记录步骤时,都会向表中添加一个新条目。条目表架构为:
id、user_id、步骤、创建日期
这个想法是让那些已经开始添加步骤但由于某些原因在某些日子里没有活跃的用户。
该过程可能如下所示(每天):
第一天:用户添加步骤(早上)
用户添加步骤(晚上)
第 2 天:用户未添加任何内容
第 3 天:用户添加步骤
第 4 天:用户未添加任何内容
。。.
第 11 天:用户未添加任何内容
系统将为该用户触发提醒
第 12 天:用户未添加任何内容
系统不会触发提醒,因为它应该只发送一次

我的问题是,我可以仅通过一次查询来实现这一目标,并且无需标记电子邮件已发送出去吗?

我的想法是从条目表中提取 user_id 并检查他们在过去 7 天内是否添加了任何内容,但如何摆脱那些超过 7 天不活跃的人。

拉取所有用户:

SELECT 
DISTINCT(user_id)
FROM
entries

拉取过去 7 天内的活跃用户:

SELECT 
DISTINCT(user_id)
FROM
entries
WHERE
date_created BETWEEN '2014-01-17' AND NOW()
ORDER BY
date_created DESC

任何建议表示赞赏(也许它在我的脑海里停留了很长时间,而且我把它复杂化了)。

谢谢。

最佳答案

这个查询应该可以做到。方便存放在您的“技巧袋”中。

SELECT u.user_name,
FROM users AS u
LEFT OUTER
JOIN entries AS e
ON e.user_id = u.user_id
AND e.date_created >= CURRENT_DATE - INTERVAL 7 DAY
WHERE e.user_id IS NULL

在查询中,左联接获取您想要查找的匹配项。因此,您感兴趣的条件(日期范围)将进入 ON 子句。 WHERE 子句限制不匹配的行(在这种情况下,所有不匹配的行将从连接返回 null。

一些引用: When to use a left outer join?

关于MySQL - 发现没有活跃用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21342924/

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