mysql max(date)无效

时间:2013-02-28 14:07:41

标签: mysql sql

所以我有这个查询应该返回一些信息,比如价格,开盘价,收盘价等等。最后一个条目。

SELECT * FROM History WHERE symbol = $symbol Having max(`date`);

但无论出于何种原因,它都没有返回正确的信息。由于某种原因,它认为最大日期是2013-02-14,但如果我查看所有数据,最近的实际上是2013-02-27。 在这种特殊情况下

$symbol = "AGNC"

最大功能在日期不起作用吗?

4 个答案:

答案 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字段类型,例如datedatetime等,这就完美无缺。

正如JW在答案中指出的那样,您可能希望在ORDER BY语句中添加更多字段,以消除具有完全相同日期的记录的消歧。

此外,如果这是一个字符串字段(charvarchar等),您可能希望将$符号放在引号中:

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);