MySQL - 如何在过去30天内为每个日期选择具有最新时间的行

时间:2017-01-27 16:56:26

标签: mysql sql database select

想象一下包含字段“日期时间”的表格。示例行:

  • 2017-01-27 13:06:02
  • 2017-01-27 05:13:14
  • 2017-01-23 22:13:56
  • 2017-01-26 14:02:09
  • 2017-01-23 13:26:12
  • ...

我需要从粗线开始,但是从现在开始的30天内......

换句话说,过去30天内具有最大日期的行。

假设每天至少有一行......

,每次总共30行

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

您可以group by日期时间的日期部分,并获得每天的最大值。

select max(`datetime`) 
from tablename
where `datetime` >= date(now())-interval '30' day
group by date(`datetime`)

要从表中获取此类行的所有字段,请使用

select * from tablename where `datetime` in (
select max(`datetime`) 
from tablename
where `datetime` >= date(now())-interval '30' day
group by date(`datetime`)
)

答案 1 :(得分:0)

从your_table中选择* 其中sysdate和sysdate-30之间的日期时间

答案 2 :(得分:0)

vkp的答案基本上是正确的,虽然不需要子查询来选择最终结果 - 您可以直接将其他列放入查询中,最多可达到以下内容:

select *, max(datetime) 
from tablename
where datetime >= date(now())-interval '30' day
group by date(datetime);

啊,这也适用于连接。

我改变以更精确地解决目标的另一件事是:

max(time(datetime))