我在DBIx::Class结果集搜索中使用group_by 。为每个组返回的结果始终是组中具有最低 id 的行(即组中最旧的行)。我正在寻找一种方法来获取具有最高 id 的行(即组中的最新行)。
问题与此基本相同: 检索每个组中的最后一条记录 ...除了我使用的是 DBIx::Class 而不是原始 SQL。
把这个问题放在上下文中:
我有一张音乐评论表
review
------
id
artist_id
album_id
pub_date
...other_columns...
任何给定的艺术家 ID/专辑 ID 都可以有多个评论。我想要最新的评论,按日期降序排列,每个艺术家 ID/专辑 ID 不超过一条评论。
我尝试使用以下方法执行此操作:
$schema->resultset('Review')->search(
undef,
{
group_by => [ qw/ artist_id album_id / ],
order_by => { -desc => 'pub_date' },
}
);
这几乎可行,但会返回每个组中最旧的评论而不是最新的评论。我怎样才能获得最新的?