所以我有这个查询,它应该返回一些信息,如价格、开盘价、收盘价等。对于最新的条目。
SELECT * FROM History WHERE symbol = $symbol Having max(`date`);
但无论出于何种原因,它都没有返回正确的信息。出于某种原因,它认为最大日期是 2013 年 2 月 14 日,但如果我查看所有数据,最新的数据实际上是 2013 年 2 月 27 日。在这种特殊情况下
$symbol = "AGNC"
max 函数在日期不起作用吗?
我想你想要这样的东西。我不喜欢使用这个 usingORDER 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);