[英]Select Record with Min value in a column and with specific value in another column
我有一张这样的表:
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
但它没有给出我想要的结果。
使用order by
和limit
:
SELECT c.*
FROM crono c
WHERE username = 'paolo'
ORDER BY time
LIMIT 1;
使用GROUP BY
,不要在SELECT
中包含不是聚合函数的参数且不在GROUP BY
——除非您真的、真的、真的知道自己在做什么。 尽管这不适用于您的查询,但它是解决方案的常见尝试。 是
这可以使用Derived table
来计算MIN(time)
,然后从Derived table
的结果中SELECT
它来完成。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.