このクエリに取り組む最善の方法を理解するのに問題があります。
user_files というテーブルがあります。ユーザーは多くのファイルを持つことができます。昨年中にファイルを変更していないユーザーのリストを取得したいと考えています。ユーザーが過去 1 年以内に少なくとも 1 つのファイルを変更した場合、そのユーザーは除外する必要があります。
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
)
ありがとう