我有一个名为 PlaylistDayStats 的模型,它与播放列表模型相关。我正在尝试执行以下查询,但如果它们与同一个播放列表相关,我不想返回两个 PlaylistDayStats。我只想根据最近更新的 PlaylistDayStat 返回第一个。
我最初的查询是:
select p from PlaylistDayStats p where order by p.updated desc
我怎样才能增加查询,以便它只为每个“p.playlist”返回一个“p”,基于哪个是首先使用“p.updated desc”返回的?
更新:
基于 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