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

时间:2015-07-10 11:55:59

标签: mysql

我有一个表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

现在我得到了例如

Peter, 18
Hans, 22

我只想让每个用户一次,我只希望每个用户的时间最短。只用一个select语句就可以了吗?

所以结果应该是:

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

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

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

但是你可以看到这是不正确的。它应该是

{{1}}

我希望将其排序为所有结果。

2 个答案:

答案 0 :(得分:1)

您必须使用GROUP BYMIN功能来实现目标。

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

答案 1 :(得分:1)

你需要使用类似的东西:

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

您将agregate函数MINGROUP BY子句一起使用。