mysql - 为一组中的每个选择最后 n 个日期记录

标签 mysql

我希望有人能提供帮助。我有一张 table ....

name    date    number
John    2014-01-01    5
Sally   2014-01-01    7
John    2013-12-24    2
Sally   2013-12-24    7
John    2013-11-10    1
Sally   2012-11-10    8

我想为每个人获取最新的 2(或 x)条记录,例如

John    2014-01-01    5
John    2013-12-24    2
Sally   2014-01-01    7
Sally   2013-12-24    7

我不知道从哪里开始。如果有人能对此有所了解,我将不胜感激。如果您能出于学习目的解释解决方案,那也很好(如果您有时间)!

非常感谢

朱尔斯

最佳答案

SELECT x.* 
  FROM my_table x 
  JOIN my_table y 
    ON y.name = x.name 
   AND y.date >= x.date 
 GROUP 
    BY x.name
     , x.date 
HAVING COUNT(*) <= 2 
 ORDER 
    BY name,date DESC;

关于mysql - 为一组中的每个选择最后 n 个日期记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21483775/

相关文章:

MySQL COUNT on WHERE 语句

php - 加载数据本地文件(替换)需要组合字段以形成键(?)

mysql - 将逗号分隔的列表分隔成查询列

php - MySQL数据库搜索php问题

mysql - 在数据库列中使用 NULL 的成本是多少?

php - 找不到 laravel 一对多关系列

php - 变量不通过

mysql - 操作数应包含 1 列 - 在 mysql 查询中

php - 编写一个可选地只显示日期之间的记录的查询

mysql - mysql中的左连接和where子句