首页  >  文章  >  数据库  >  在 MySQL 中,如何在按名称分组之前按日期和时间排序?

在 MySQL 中,如何在按名称分组之前按日期和时间排序?

Linda Hamilton
Linda Hamilton原创
2024-11-01 22:59:29449浏览

How to Order by Date and Time Before Grouping by Name in MySQL?

ORDER BY 日期和时间在 MySQL 中的 GROUP BY 名称之前

在 MySQL 中,ORDER BY 子句应用在 GROUP BY 子句之前。但是,在某些情况下,用户需要先按日期和时间字段对数据进行排序,然后再对名称列执行 GROUP BY。

考虑下表:

name date time
tom 2011-07-04 01:09:52
tom 2011-07-04 01:09:52
mad 2011-07-04 02:10:53
mad 2009-06-03 00:01:01

目标是首先检索最旧的名称。以下查询失败:

SELECT *
ORDER BY date ASC, time ASC
GROUP BY name

这是因为 GROUP BY 在 ORDER BY 之前应用,导致在排序之前对具有相同名称的记录进行分组。结果,没有达到预期的排序。

解决方案:

要解决此问题,可以使用以下方法:

SELECT *
FROM (
    SELECT * FROM table_name
    ORDER BY date ASC, time ASC
) AS sub
GROUP BY name

在此查询中:

  • 子查询通过先按日期然后按时间升序对行进行排序来创建中间结果集。
  • 外部查询从子查询中选择所有列并对名称列执行 GROUP BY 操作。

通过使用此方法,GROUP BY 应用于排序的结果集,确保首先检索最旧的名称,无论日期和时间如何田野。

以上是在 MySQL 中,如何在按名称分组之前按日期和时间排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn