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 应用于排序的结果集,确保首先检索最旧的名称,无论日期和时间如何田野。
以上是在 MySQL 中,如何在按名称分组之前按日期和时间排序?的详细内容。更多信息请关注PHP中文网其他相关文章!