【发布时间】:2011-08-22 22:15:04
【问题描述】:
我在 DBIx::Class 结果集搜索中使用 group_by。为每个组返回的结果始终是组中具有最低 id 的行(即组中最旧的行)。我正在寻找一种方法来获取具有最高 id 的行(即组中的最新行)。
问题与此基本相同: Retrieving the last record in each group ...除了我使用的是 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' },
}
);
这几乎可以正常工作,但会返回每个组中最旧的评论,而不是最新的。 我怎样才能获得最新的?
【问题讨论】:
-
也许
-desc=>-asc? -
J0HN - order_by 在分组完成后应用,因此不会影响每个组返回的结果。
标签: sql perl search group-by dbix-class