我有一张这样的表:
username date place time
paolo 1/1/2001 milan 00:10.20
marco 1/1/2001 milan 00:11.40
paolo 1/1/2011 milan 00:12.20
paolo 1/1/2004 milan 00:10.50
我想返回用户名paolo
的最短时间值的行:
paolo 1/1/2001 milan 00:10.20
我正在尝试使用此查询:
SELECT username,date,place,MIN(time) as record
FROM crono
WHERE username="paolo"
GROUP BY username,date,place
但它没有给出我想要的结果。
答案 0 :(得分:1)
使用order by
和limit
:
SELECT c.*
FROM crono c
WHERE username = 'paolo'
ORDER BY time
LIMIT 1;
使用GROUP BY
时,永远不会让SELECT
中的列不是聚合函数的参数且不在GROUP BY
中 - 除非你真的,真的,真的知道你在做什么。虽然这不适用于您的查询,但这是解决方案的常见尝试。 ÿ
答案 1 :(得分:0)
可以使用Derived table
来计算MIN(time)
,然后根据SELECT
的结果计算Derived table
。
SELECT username, date, place, record
FROM
(SELECT username, MIN(time) AS record
FROM crono c
GROUP BY username) recordselect
INNER JOIN crono c on recordselect.username= c.username