mysql - 仅选择每个用户用时最短的条目

标签 mysql

我有一个表USER:

USER_ID BIGINT NOT NULL PRIMARY KEY,
USER_NAME VARCHAR(255) NOT NULL,
USER_EMAIL VARCHAR(255) NOT NULL,
USER_TIME BIGINT NOT NULL

我选择数据:

SELECT USER_NAME, USER_TIME FROM USER ORDER BY USER_TIME

现在我明白了

Peter, 18
Hans, 22
Peter, 33
Peter, 44
Hans, 45

我只想每个用户一次,并且只想每个用户的最短时间。只用一条 select 语句就可以实现这一点吗?

所以结果应该是:

Peter, 18
Hans, 22

以下 select 语句对于我的问题来说不正确:

SELECT USER_ID,USER_NAME,MIN(USER_TIME)
FROM USER
GROUP BY USER_ID
ORDER BY USER_TIME 

因为它没有正确排序。如果我有这个列表:

Peter, 18
Hans, 22
Peter, 33
queen, 15
Peter, 44
queen, 14
Hans, 45

通过上面的语句我得到这个结果:

Peter, 18
queen, 14
Hans, 22

但正如您所看到的,这是不正确的。应该是

queen, 14
Peter, 18
Hans, 22

我希望它对所有结果进行排序。

最佳答案

您必须使用GROUP BYMIN函数来实现您的目标。

SELECT USER_ID,USER_NAME,MIN(USER_TIME)
FROM USER
GROUP BY USER_ID
ORDER BY MAX(USER_TIME) DESC ;

关于mysql - 仅选择每个用户用时最短的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340140/

相关文章:

使用 Wamp 服务器在 WordPress 上运行 PHP

mysql - 使用sql计算频率

mysql - 使用 sql 访问最多的前 n 个页面

php - mysql_fetch_array() 有一个奇怪的问题

mysql - 寻找MySQL中存储300万个顶点的图的有效方法

php - mysql 如何在一行中显示每个投资组合、股票的值

php - 使用选择选项 php 插入数据库信息

php - 在类(class)的开始和结束日期之间返回休息时间

mysql - 将行数添加为新列

mysql - 如何将此 sql 转换为 sqlalchemy 查询? (MySQL 中的年、月、计数)