我有一個包含DateTime和Value列的表。我需要從最後一天(最新)一天中選擇最大值。我能想出的最好的是3個步驟:SQL select最後一天的MAX值
SELECT MAX(DateTime) FROM MyTable
- 擺脫日期時間時間部分,存儲日期
SELECT MAX(Value) FROM MyTable WHERE DateTime>date
的有沒有更好的方式來做到這一點?
我有一個包含DateTime和Value列的表。我需要從最後一天(最新)一天中選擇最大值。我能想出的最好的是3個步驟:SQL select最後一天的MAX值
SELECT MAX(DateTime) FROM MyTable
SELECT MAX(Value) FROM MyTable WHERE DateTime>date
的有沒有更好的方式來做到這一點?
在一個查詢你的三個步驟將
SELECT MAX(Value)
FROM MyTable
WHERE DateTime >= CAST((SELECT MAX(DateTime)FROM MyTable) AS DATE)
現在發現的最大日期可能是相當昂貴的查詢,所以如果你昨天的最高值後,實際上是,那麼你應該使用CURRENT_DATE
相反,即
WHERE DateTime >= (CURRENT_DATE - 1) AND DateTime < CURRENT_DATE
該條件還將選擇今天(或明天)的字段。 –
由於我們選擇最大日期,因此不會有「明天的記錄」。但是CURRENT_DATE的查詢需要修復,那就對了。 – ain
謝謝@ain! CAST的訣竅是我一直在尋找的。 –
你可以這樣做嗎?
SELECT MAX(Value)
FROM MyTable
WHERE DateTime IN (
SELECT MAX(DateTime)
FROM MyTable
)
如果你的意思今天的最高值,那麼你可以使用:
SELECT MAX(value)
FROM MyTable
WHERE CAST(DateTime AS DATE) = CURRENT_DATE
也許我還不夠清楚。我不是說今天的最高價值。我的意思是全天最高值和最高日期時間。那一天可能是今天,那一天可能是昨天,也可能是上週的一天。 –
您使用的是什麼rdbms? –
我使用火鳥。 –
@FreshPrinceOfSO檢查標記 –