我在理解如何最好地解决此查询时遇到问题。
我有一个名为 user_files 的表。一个用户可以有很多文件。我想获取在过去一年内未修改任何文件的用户列表。如果用户在去年至少修改了一个文件,则应排除该用户。
Table: user_files
file_id | user_id | date_modified
----------------------------------
1 100 2010-10-01
2 100 2010-11-13
3 100 2011-01-01
4 101 2010-10-01
5 101 2010-06-13
6 101 2011-04-12
7 101 2012-04-01
预期结果将仅列出 user_id 100。
这是我一直在玩的一些糟糕的sql。这个想法是我找到所有最近修改过他们的文件的用户,然后找到没有包含在该列表中的用户。
select user_id from users where user_id not in
(
select user_id from
(
select user_id, story_id, max(date_modified) from user_files
where DATE_FORMAT(date_modified, '%Y-%m-%d') >= DATE_SUB(curdate(), INTERVAL 1 YEAR)
group by user_id
)x
)
谢谢