[英]mysql max(date) not working
所以我有這個查詢應該返回一些信息,例如價格,開盤價,收盤價等。
SELECT * FROM History WHERE symbol = $symbol Having max(`date`);
但是無論出於什么原因,它都沒有返回正確的信息。 由於某種原因,它認為最大日期是2013年2月14日,但是如果我查看所有數據,則最新日期實際上是2013年2月27日。 在這種情況下
$symbol = "AGNC"
max函數不能按日期使用嗎?
我想你想要這樣的東西。 我不喜歡使用ORDER BY
子句來執行此操作,因為在某些情況下( 盡管很少 )記錄可能具有相同的最新date
輸入。
SELECT *
FROM History
WHERE symbol = $symbol AND
date = (SELECT MAX(date) FROM History)
我的建議是完全不使用MAX
。 如果您只想獲取表中的最新條目,則可以嘗試:
SELECT * FROM History WHERE symbol = $symbol ORDER BY date DESC LIMIT 1;
只要您將date
字段實際聲明為與日期相關的MySQL字段類型(例如date
, datetime
等),此方法就可以完美地工作。
正如JW在他的回答中指出的那樣,您可能希望在ORDER BY
語句中添加更多字段,以消除日期完全相同的記錄的歧義。
另外,如果這是一個字符串字段( char
, varchar
等),則可能需要將$ symbol放在引號中:
SELECT * FROM History WHERE symbol = '$symbol' ORDER BY date DESC LIMIT 1;
干杯!
以下應該做您想要的:
SELECT *
FROM History h
WHERE symbol = $symbol and
`date` = (select max(`date`) from History where symbol = $symbol)
您可以使用別名表名稱:
SELECT *
FROM History
WHERE symbol = $symbol AND
date = (SELECT MAX(date) FROM History);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.