当前位置: 首页 > 面试题库 >

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

谷梁卓
2023-03-14
问题内容

我有这样一张桌子:

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在其找到的第一个匹配结果上进行分组。如果第一个匹配的碰巧恰好是您想要的匹配,那么一切都会按预期进行。

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



 类似资料:
  • 问题内容: 我知道有一些与此相关的帖子,但是我的情况有些不同,因此我希望获得一些帮助。 我需要从数据库中提取一些数据,这些数据是每天交互的累积计数。目前这就是我所拥有的 这样的输出接近我想要的,但不完全是我所需要的。我遇到的问题是日期与发生互动的时分秒存储在一起,因此group by不能将天分组在一起。 这就是输出的样子。http://screencast.com/t/N1KFNFyil 12月2

  • 问题内容: 我要显示的最后5个输入的特定ID数据。我的SQL查询是 是DATETIME 它显示按日期而非时间排序的最后5个条目。然后在同一日期按字母顺序排序。 假设我在同一日期有3个条目,并带有差异时间 比方说 查询以上查询后 我得到的是 按日期排序,然后按字母顺序 我想要的是这个.. 还按日期和时间排序… 问题答案: 如果要最后5行(以升序排列),则需要一个子查询: 第10次阅读问题后,这可能是

  • 我想按组计算tab$date[i1]和tab$date[I]之间的时差(以小时为单位)。这里是我的代码: 问题是我同时获得了小时、分钟和秒: 日期是POSIXct数据。我怎样才能只获得小时数?

  • 问题内容: 我有一个称为 activity_dt 的日期时间,数据如下所示: 如何按日期和小时分组? 问题答案: SQL Server: 甲骨文: MySQL的:

  • 问题内容: 我在这里看到了类似的问题,但是没有一个问题帮助我解决了这个问题。 我有一个表可以说测试(使用mysql MyISAM) 测试具有以下架构: 现在,当前登录的用户每次访问测试页时,都会向该表添加记录,以记录访问过的用户ID,并且每次使用TID自动访问的用户访问的一些数据以及日期和时间。 然后我有一个后端管理页面,在这里我可以看到哪个用户访问了测试页面,多少次,数据以及何时。基本上,它是一

  • 问题内容: 我有一个表,该表包含大约100.000个博客文章,并通过1:n关系链接到具有50个供稿的表。当我用select语句查询两个表时(按发布表的datetime字段排序),MySQL始终使用文件排序,导致查询时间非常慢(> 1秒)。这是表的架构(简化): 这是桌子: 这是执行时间超过1秒的查询。请注意,该字段具有索引,但MySQL并未使用它对发布表进行排序: 该查询命令的结果表明MySQL正