对查看最新条目的数据组进行排序

时间:2011-10-01 08:31:11

标签: mysql

我有一个包含两列teamdate的表格。 date列包含条目添加到表格的日期。

我想打印按date DESC排序的每个小组的最后10个条目。 我还希望按date DESC对这些团队条目组进行排序。

我尝试了很多东西,但没有运气。它有效,但有2个查询在这种情况下是不可接受的。

如何使用单个查询执行此操作?我觉得这是一个非常新手的问题。

1 个答案:

答案 0 :(得分:1)

SELECT rows.team, rows.date FROM (
  SELECT team, date,
    IF( @prev <> team, @rownum := 1, @rownum := @rownum+1 ) AS rownum,
    @prev := team
  FROM my_table
  JOIN (SELECT @rownum := NULL, @prev := 0) AS init
  ORDER BY team, date DESC
) AS rows
WHERE rownum <= 10

我们在子查询中创建一个临时(虚拟)表,其中行按团队排序,日期DESC,我们从顶部开始给每行增加一个行号,每当团队更改时我们重置行号,然后在外部查询我们过滤掉行号大于10的任何行。