我有一张这样的 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/