我有一个表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}}
我希望将其排序为所有结果。
答案 0 :(得分:1)
您必须使用GROUP BY
和MIN
功能来实现目标。
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函数MIN
与GROUP BY
子句一起使用。