如何从 MySQL 分组结果中检索第一条和最后一条记录?

Patricia Arquette
发布: 2024-11-10 06:22:02
原创
810 人浏览过

How to Retrieve the First and Last Records from Grouped Results in MySQL?

从 MySQL 中的分组结果中检索第一条和最后一条记录

在 MySQL 中,从分组结果集中获取第一条和最后一条记录,同时应用聚合函数可能具有挑战性。考虑以下查询:

SELECT MIN(low_price), MAX(high_price), open, close
FROM symbols
WHERE date BETWEEN (.. ..)
GROUP BY YEARWEEK(date)
登录后复制

此查询按周对数据进行分组,并计算每周的最低低价、最高最高价、开盘价和收盘价。但是,它不提供每个组中的第一个和最后一个记录。

要实现此目的,一种方法是使用 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
登录后复制

此解决方案允许您连接每个组的所有打开值和关闭值,以逗号分隔,然后使用 SUBSTRING_INDEX 提取第一个和最后一个值。这种方法避免了昂贵的子查询,并且可以更有效地解决这个特定问题。

有关 GROUP_CONCAT 和 SUBSTRING_INDEX 函数的更多信息,请参阅 MySQL 文档。此外,您还可以探索其他选项,例如使用窗口函数或用户定义的函数,具体取决于查询的具体要求。

以上是如何从 MySQL 分组结果中检索第一条和最后一条记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板