簡體   English   中英

MySQL-如何選擇從現在起過去30天內每個日期具有最新時間的行

[英]MySQL - How to select rows with the latest time for each date within the last 30 days from now

想象一個帶有字段“ datetime ”的表。 示例行:

  • 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行...

任何幫助深表感謝。

您可以group by日期時間的日期部分進行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`)
)

從your_table中選擇*,其中sysdate和sysdate-30之間的日期時間

vkp的答案基本上是正確的,盡管不需要子查詢從中選擇最終結果-您可以將其他列直接放入查詢中,直到這樣:

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

嗯,這也適用於加入。

為了更精確地實現目標,我要做的另一件事是:

max(time(datetime))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM