MySQL每天选择最后一行

dro*_*oid 3 mysql aggregate-functions

尝试每天选择最后一行。

这是我的(简化的,实际表中有更多记录)表:

+-----+-----------------------+------+
| id  |       datetime        | temp |
+-----+-----------------------+------+
|  9  | 2017-06-05 23:55:00   | 9.5  |
|  8  | 2017-06-05 23:50:00   | 9.6  |
|  7  | 2017-06-05 23:45:00   | 9.3  |
|  6  | 2017-06-04 23:55:00   | 9.4  |
|  5  | 2017-06-04 23:50:00   | 9.2  |
|  4  | 2017-06-05 23:45:00   | 9.1  |
|  3  | 2017-06-03 23:55:00   | 9.8  |
|  2  | 2017-06-03 23:50:00   | 9.7  |
|  1  | 2017-06-03 23:45:00   | 9.6  |
+-----+-----------------------+------+
Run Code Online (Sandbox Code Playgroud)

我想选择 id = 9、id = 6 和 id = 3 的行。

我试过这个查询:

SELECT MAX(datetime) Stamp
     , temp 
  FROM weatherdata 
 GROUP 
    BY YEAR(DateTime)
     , MONTH(DateTime)
     , DAY(DateTime) 
 order 
    by datetime desc 
 limit 10;
Run Code Online (Sandbox Code Playgroud)

但是 datetime 和 temp 不匹配。

亲切的问候

Dar*_*hta 6

这是一种方法,它获取MAX每天的日期,然后在INNER查询中使用它来获取其他字段:

SELECT * 
FROM test
WHERE `datetime` IN (
  SELECT MAX(`datetime`) 
  FROM test
  GROUP BY DATE(`datetime`)
 );
Run Code Online (Sandbox Code Playgroud)

这是SQL Fiddle