我正在收集报价数据,并选择opt\u ticker和quotetimestamp作为主键,以便随着时间的推移存储唯一的报价。我现在想创建一个视图,在其中可以看到每个opt\u ticker的最新报价(数据库中也有其他opt\u ticker的唯一报价)。基本上希望看到每个股票/期权的最新报价。
在上面的例子中,我想得到最后一行,因为它是特定合同的最新时间戳。
我原以为这个查询可以解决这个问题,但mysql抱怨说我需要执行group-by。
select symbol,opt_ticker,ask,bid,exp,strike,type,max(quoteTimeStamp)
from optionquotes
group by opt_ticker
21:36:42 select symbol,opt_ticker,ask,bid,exp,strike,type,max(quoteTimeStamp) from optionquotes group by opt_ticker,symbol LIMIT 0, 1000 Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'od2.optionquotes.ask' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 0.000 sec
这里是我的服务器信息,如果它有帮助
Server
Product: (Ubuntu)
Version: 5.7.30-0ubuntu0.16.04.1
Connector
Version: C++ 8.0.20
这听起来很容易,但我有最艰难的时间来解决这个问题,提前谢谢你。
2条答案
按热度按时间mxg2im7a1#
在MySQL5.x中,您可以执行以下操作:
在mysql 8.x中,您可以执行以下操作:
dgiusagp2#
为了给出完整的答案,这里有一个使用连接的标准方法: