我有一个包含两列team
和date
的表格。 date
列包含条目添加到表格的日期。
我想打印按date DESC
排序的每个小组的最后10个条目。
我还希望按date DESC
对这些团队条目组进行排序。
我尝试了很多东西,但没有运气。它有效,但有2个查询在这种情况下是不可接受的。
如何使用单个查询执行此操作?我觉得这是一个非常新手的问题。
答案 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的任何行。