如何让mysql返回具有最高看涨值的行?

时间:2012-08-15 21:49:04

标签: mysql aggregate-functions

考虑下表:

stock    _date       return2  bullishness
-----------------------------------------
1        2011-03-14  0.10     0.75
2        2011-03-14  0.05     1.75
3        2011-03-14  0.11     1.00
1        2011-03-15  0.03     1.99
2        2011-03-15  0.30     4.00
3        2011-03-15  0.00     0.60

我正在寻找一个查询:

  • 查看特定bullishness所有stock的{​​{1}}
  • 并返回具有最高_date
  • 的行

我希望,bullishness能够用

完成此任务
2011-03-14

但这总是会返回第一行,在这种情况下:

SELECT MAX(bullishness) as bullishness, stock, return2 
FROM stocks 
WHERE _date = '2011-03-14'

虽然我希望查询返回第二行(因为它的1 2011-03-14 0.10 0.75 为1.75,高于0.75):

bullishness

我做错了什么?

1 个答案:

答案 0 :(得分:4)

MAX()这样的{p> Aggregate functions无法按照您期望的方式运作。

你可以用这个技巧得到你想要的东西:

SELECT bullishness, stock, return2 
FROM stocks 
WHERE _date = '2011-03-14'
ORDER BY bullishness DESC
LIMIT 1

你基本上是看涨下跌,所以最大的看涨是先行。然后你只限制一个结果。