MySQL查询仅选择日期组的最后一行

标签 mysql select group-by

我有以下查询:

SELECT elo, date(date_calculated) date FROM users_historical_elo WHERE uid =36 order by id asc

产生这个结果:

|埃洛 |日期

|984|2011-04-04

|1010|2011-04-04

|1036|2011-04-04

|1016|2011-04-08

|1000|2011-04-08

|944|2011-04-09

|973|2011-04-09

...

我需要帮助来编写一个仅选择按日期分组的最后一个“elo”的查询。所以输出应该是:

|埃洛 |日期

|1036|2011-04-04

|1000|2011-04-08

|973|2011-04-09

...

谢谢!

最佳答案

如果 id 是表的主键,那么这样做:

SELECT elo
     , date(date_calculated) AS date
FROM users_historical_elo 
  JOIN
    ( SELECT MAX(id) AS id
      FROM users_historical_elo
      WHERE uid =36
      GROUP BY date(date_calculated)
    ) AS grp
    ON grp.id = users_historical_elo.id
ORDER BY grp.id ASC

关于MySQL查询仅选择日期组的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6165280/

相关文章:

java - 关系数据库模式是否必须规范化为第三范式才能使其成为 ORM 可映射的?

css - 选择中的彩色文本不适用于 chrome

MySQL:从逗号分隔的列表/列表中选择作为表? "SELECT a FROM (1, 2, 3)"

sql - GROUP BY 在 SQL 中使用参数

mysql - Group By 在同一字段上有多个 Having

php - 我的数据未显示在phpmyadmin db中

mysql - 对所有值进行计数并使用 count 进行分组

javascript - 如何在 Spring 中制作 Angular Rest 应用程序?

java - 两个以相同数据开头的 ArrayList

mysql - 按列分组的限制