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

Php 选择一列中具有最小值且另一列中具有特定值的记录,php,mysql,sql,Php,Mysql,Sql,我有一张这样的桌子: 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的时间值最低的行:

我有一张这样的桌子:

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的时间值最低的行:

我正在尝试此查询:

SELECT username,date,place,MIN(time) as record
FROM crono
WHERE username="paolo"
GROUP BY username,date,place
但它并没有给出我想要的结果。

使用orderby和limit:

使用GROUP BY时,在SELECT中永远不要有不属于聚合函数参数的列,也不要有不属于GROUP BY的列,除非您真的、真的、真的知道自己在做什么。虽然这不适用于您的查询,但这是解决方案的常见尝试。Y

这可以使用派生表来计算最小时间,然后从派生表的结果中选择它


提示:将日期和时间存储为单个实体,并使用正确的数据类型。
SELECT username,date,place,MIN(time) as record
FROM crono
WHERE username="paolo"
GROUP BY username,date,place
SELECT c.*
FROM crono c
WHERE username = 'paolo'
ORDER BY time
LIMIT 1;
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