我正在尝试获取“分组”记录的第一条记录和最后一条记录。 更准确地说,我正在执行这样的查询
SELECT MIN(low_price), MAX(high_price), open, close FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date) 但我想获得小组的第一和最后的记录。可以通过执行大量请求来完成,但是我的桌子很大。
是否有使用MySQL的方法(如果可能的话,可以减少处理时间)?
您要使用GROUP_CONCAT和SUBSTRING_INDEX:
SUBSTRING_INDEX( GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1 ) AS open SUBSTRING_INDEX( GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1 ) AS close 这避免了昂贵的子查询,并且我发现对于这个特定问题它通常更有效。
请查阅手册中的两个函数以了解它们的参数,或访问本文,其中包含有关如何在MySQL中进行时间框架转换的示例,以获取更多说明。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。