mysql - 在mysql中按名称分组之前按日期和时间排序

标签 mysql sorting group-by sql-order-by

我有一张这样的 table :

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 name ORDER BY date ASC, time ASC 让我先发疯,因为它先分组再排序!

再次:问题是我无法在分组之前按日期和时间排序,因为 GROUP BY 必须在 ORDER BY 之前!

最佳答案

另一种方法:

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

GROUP BY 对它命中的第一个匹配结果进行分组。如果第一个匹配的命中恰好是您想要的,那么一切都应该按预期工作。

我更喜欢这种方法,因为子查询具有逻辑意义,而不是与其他条件一起使用。

关于mysql - 在mysql中按名称分组之前按日期和时间排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572110/

相关文章:

mysql - 使用mysql拆分值并将分隔值放入两个不同的列

linux - 排序命令不适用于大文件

sql - SQLite分组

arrays - BigQuery标准SQL:如何按ARRAY字段分组

sorting - Elasticsearch查询返回奇怪的排序(基于分数)结果

arrays - PostgreSQL:有效地将数组列聚合为组的一部分

mysql - 未知的 mysql 存储函数语法错误

php - 如果表中存在值则循环查询直到不存在

Mysql循环遍历选中的列,在循环中执行Insert查询

php - 使用 php 从 mysql 查询中排序数据有困难