繁体   English   中英

选择在列中具有最小值并在另一列中具有特定值的记录

[英]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 bylimit

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM