mysql - 限制返回的行数 ORDER BY

标签 mysql

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

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

id  |  .........

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

我的发言结尾是:

ORDER BY id, date DESC

最佳答案

这是一种方法:

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 的行。

关于mysql - 限制返回的行数 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24223890/

相关文章:

php - 将错误添加到 pdo_error.ctp

php - Zend_Db_Statement_Pdo->用参数中的表达式执行

c# - 是什么导致了这个 MySql.Data.MySqlClient.MySqlException? C#

mysql - 是否可以更有效地获得 count(*) 和 * ?

mysql - 修复错误 mysql server has gone away

mysql - 替换成查询语法

mysql - pentaho数据集成查询sql错误

php - MySQL-替换整个表中所有行和列的空间

php - 如何仅查询之前(月和年)的日期? (拉拉维尔)

mysql - 数据库责任