プレイリスト モデルに関連する PlaylistDayStats というモデルがあります。次のクエリを実行しようとしていますが、同じ Playlist に関連する 2 つの PlaylistDayStats を返したくありません。最近更新された PlaylistDayStat に基づいて最初のものを返したいだけです。
私の最初のクエリは次のとおりです。
select p from PlaylistDayStats p where order by p.updated desc
「p.updated desc」を使用して最初に返されたものに基づいて、「p.playlist」ごとに単一の「p」のみを返すようにクエリを拡張するにはどうすればよいですか?
アップデート:
Joe Taras の例に基づいて更新を行いましたが、特定のユーザーの PlaylistDayStats だけに絞り込む必要があることも考慮しなければなりませんでした。つまり、「p.user = johndoe@gmail.com」です。また、注文を維持する必要がありました。この新しいクエリは私にとってはうまくいくようですが、私が行った更新がクエリを実行するための最も効率的な方法であるかどうか、または私が予期していない何か他のものを台無しにしている可能性があるかどうかはわかりません.
select p
from PlaylistDayStats p
where not exists(
select 'next'
from PlaylistDayStats p2
where p2.playlist.id = p.playlist.id
and p2.updated > p.updated
and p2.user = johndoe@gmail.com
)
and p.user = johndoe@gmail.com
order by p.updated desc