【发布时间】:2014-11-11 16:01:12
【问题描述】:
好的,这里画个空白,搜索不成功。
- 用户表:id、姓名、电子邮件
- 活动表:id、时间戳、user_id
许多用户,一些有很多活动,一些很久以前,一些根本没有。 我希望所有用户 ID 在过去 30 天内没有活动(或者实际上根本没有活动)。在过去 30 天内存在某些时间戳的任何用户都将从结果中省略。
奖励问题,奖励独角兽眼泪:我如何将查询更改为更新匹配的用户行,例如设置列年龄=1
【问题讨论】:
好的,这里画个空白,搜索不成功。
许多用户,一些有很多活动,一些很久以前,一些根本没有。 我希望所有用户 ID 在过去 30 天内没有活动(或者实际上根本没有活动)。在过去 30 天内存在某些时间戳的任何用户都将从结果中省略。
奖励问题,奖励独角兽眼泪:我如何将查询更改为更新匹配的用户行,例如设置列年龄=1
【问题讨论】:
您可以使用 INTERVAL 和加号或减号运算符来计算 30 天前:CURDATE() - INTERVAL 30 DAY。
SELECT User.id
FROM User
LEFT JOIN Activity ON User.id = Activity.user_ID
GROUP BY User.id
HAVING MAX(Activity.timestamp) < CURDATE() - INTERVAL 30 DAY
OR MAX(Activity.timestamp) IS NULL
MAX(Activity.timestamp) IS NULL 应该照顾没有活动的用户。
【讨论】:
UPDATE User SET aged = 1 WHERE id IN ( 上面的整个查询 ) .