所以我有这个查询应该返回一些信息,比如价格,开盘价,收盘价等等。最后一个条目。
SELECT * FROM History WHERE symbol = $symbol Having max(`date`);
但无论出于何种原因,它都没有返回正确的信息。由于某种原因,它认为最大日期是2013-02-14,但如果我查看所有数据,最近的实际上是2013-02-27。 在这种特殊情况下
$symbol = "AGNC"
最大功能在日期不起作用吗?
答案 0 :(得分:7)
我想你想要这样的东西。我不喜欢使用ORDER BY
子句执行此操作,因为有些可能(尽管很少)记录可能具有相同的最新date
条目。
SELECT *
FROM History
WHERE symbol = $symbol AND
date = (SELECT MAX(date) FROM History)
答案 1 :(得分:2)
我的建议是根本不使用MAX
;如果您想要做的只是获取表格中的最新条目,您可以尝试:
SELECT * FROM History WHERE symbol = $symbol ORDER BY date DESC LIMIT 1;
只要您的date
字段实际上被声明为与日期相关的MySQL字段类型,例如date
,datetime
等,这就完美无缺。
正如JW在答案中指出的那样,您可能希望在ORDER BY
语句中添加更多字段,以消除具有完全相同日期的记录的消歧。
此外,如果这是一个字符串字段(char
,varchar
等),您可能希望将$符号放在引号中:
SELECT * FROM History WHERE symbol = '$symbol' ORDER BY date DESC LIMIT 1;
干杯!
答案 2 :(得分:0)
以下应该做你想做的事:
SELECT *
FROM History h
WHERE symbol = $symbol and
`date` = (select max(`date`) from History where symbol = $symbol)
答案 3 :(得分:0)
您可以使用别名表名称:
SELECT *
FROM History
WHERE symbol = $symbol AND
date = (SELECT MAX(date) FROM History);