所以我有这个查询应该返回一些信息,如价格,打开,关闭等..最新条目。mysql max(date)不工作
SELECT * FROM History WHERE symbol = $symbol Having max(`date`);
但是,无论什么原因,它不会返回正确的信息。由于某种原因,认为最大日期是2013年2月14日,但如果我查看所有数据,最新的实际上是2013年2月27日。 在这种特殊情况下
$symbol = "AGNC"
是否max函数不是在约会工作?
所以我有这个查询应该返回一些信息,如价格,打开,关闭等..最新条目。mysql max(date)不工作
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)
那么工作..但我没有得到它。为什么/这有什么不同? – brandenwagner 2013-02-28 16:09:37
@brandenwagner你是什么意思*为什么/如何不同?*? – 2013-02-28 16:11:15
为什么显示正确的日期,但我原来的查询不是? – brandenwagner 2013-02-28 16:46:23
我的建议是不使用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;
干杯!
,这不会处理重复的权利?例如,http://www.sqlfiddle.com/#!2/d65b8/2 – 2013-02-28 14:56:57
极限1部分将确保只有一条记录被返回,如果这是你的意思;如果多行具有相同的日期,它将选择其中一个并返回。它选择哪一个将取决于额外的ORDER BY字段(如果没有其他指定,则返回的记录不能保证是你正在寻找的那个。不过,我认为这是一种更有效的方法,因为它不会依靠运行一个子查询和一个MySQL函数... – 2013-02-28 21:39:46
澄清我的最新评论 - 问题的作者声明他只想要最新的条目(不是条目)。假设他只需要一条记录,我的声明可以更有效地执行这个技巧,因为它不需要子查询。但是,如果作者确实需要在最大日期发布“全部条目”,那么您的陈述确实是最佳选择。干杯JW! – 2013-02-28 23:08:03
以下应该做你想要什么:
SELECT *
FROM History h
WHERE symbol = $symbol and
`date` = (select max(`date`) from History where symbol = $symbol)
您可以使用别名表名 SELECT * 历史 WHERE符号= $符号与 日期=(SELECT MAX(日)从历史中)
历史表的结构是什么?日期列名称是什么? – 2013-02-28 14:10:56