where句内でselectを実行しようとしています。
基本的に、私には多くのユーザーがいて、どれがアクティブであるかを確認しようとしています。アクティブとは、過去30日間のアクティビティを記録したことを意味します。ただし、ユーザーテーブルをアクティビティテーブルと結合すると、重複するユーザーIDが取得されます(各ユーザーが複数のアクションをログに記録している可能性があるため)。
そのため、ユーザーごとに、少なくとも1つのアクションがあることを確認するselectを中に配置することを検討していました。
SELECT u FROM `users` u
where (
select count(*) FROM `user_activity` ua
where ua.user_id = u.user_id and ua.last_login between "2012-04-01 00:00:00" and "2012-04-30 23:59:59"
) >= 1