我有一个表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 BY
和MIN
函数来实现您的目标。
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/