限制返回的行数ORDER BY

时间:2014-06-14 20:14:15

标签: mysql

我想限制使用带有ORDER BY子句的语句时返回的行数。

我的一个列的ID不是该行唯一的ID,因此会出现多次。如果我在语句的末尾使用LIMIT,它将完全限制结果,而不是在SELECT点。 LIMIT可能是3,在这种情况下,每个ID将返回三行。

id  |  .........

1   |  .........
1   |  ........
1   |  .......
1   |  ......
1   |  .....
2   |  ....
2   |  ...
2   |  ..
2   |  .

我的陈述结尾了:

ORDER BY id, date DESC

1 个答案:

答案 0 :(得分:1)

这是一种方法:

select t.*
from table t
where (select count(*)
       from table t2
       where t2.id = t.id and t2.date >= t.date
      ) <= 3
order by id, date desc;

这会计算id的日期数等于或大于行中的日期,并且只保留计数小于或等于3的行。