Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用group by和order by时获取最低值_Mysql_Sql_Group By_Sql Order By - Fatal编程技术网

Mysql 使用group by和order by时获取最低值

Mysql 使用group by和order by时获取最低值,mysql,sql,group-by,sql-order-by,Mysql,Sql,Group By,Sql Order By,我有一张桌子,看起来大约有50行。该表保存跟踪会议的结果。结构如下: 我正在做的是为每项活动列出前十名。以下是我到目前为止的情况: SELECT * FROM Times WHERE event='1600m' GROUP BY fname, lname ORDER BY time, event LIMIT 10 每个人可以在每个事件的列表上出现一次。这是可行的,但是如果你一直看下面1600米的距离 您可以看到Kyle Rummens的时间为4:32:00。下图是上面sql语句的结果:

我有一张桌子,看起来大约有50行。该表保存跟踪会议的结果。结构如下:

我正在做的是为每项活动列出前十名。以下是我到目前为止的情况:

SELECT * FROM Times WHERE event='1600m' GROUP BY fname, lname ORDER BY time, event LIMIT 10
每个人可以在每个事件的列表上出现一次。这是可行的,但是如果你一直看下面1600米的距离

您可以看到
Kyle Rummens
的时间为
4:32:00
。下图是上面sql语句的结果:

凯尔的时间是
4:36:00

我如何才能让它成为1600m
赛事的前10个最快时间的列表,每个人只能在列表中出现一次,这是每个人的最快时间

编辑:我被要求将结果添加到文本而不是图像中,因此它们如下所示:

这是上述查询的结果:

fname  lname       event time     meetName             date
====== =========== ===== ======== ==================== ==========
Jeron  Tucker      1600m 04:09:00 Coaches Meet         2015-02-12
Chris  Hughes      1600m 04:27:00 Distance Chalenge    2015-02-10
Andrew Rummens     1600m 04:28:00 Simplot Games        2015-02-20
Kyle   Rummens     1600m 04:36:00 Simplot Games        2015-02-19
Alex   Southerland 1600m 04:52:00 Coaches Meet         2015-02-12
Canyon Schmerse    1600m 04:54:00 Arcadia Invitational 2015-05-12
Joseph Stone       1600m 05:08:00 Coaches Meet         2015-02-12
Teron  Tucker      1600m 05:09:00 Harvard Track Meet   2015-02-19
Little Jacob       1600m 05:12:00 Arcadia Invitational 2015-05-12
Connor Kleinman    1600m 05:54:00 BYU Invitational     2015-04-03

在选择后添加单词DISTINCT

SELECT DISTINCT * FROM Times WHERE event='1600m' GROUP BY fname, lname ORDER BY MIN(time) LIMIT 10
对每位游泳者使用
min(time)
查找每位游泳者的最快时间:

SELECT fname, lname, min(time) as tune
FROM Times
WHERE event = '1600m'
GROUP BY fname, lname
ORDER BY time
LIMIT 10

也不需要按
事件
排序,因为使用相关子查询总是
'1600m'

SELECT t1.* 
FROM Times t1
WHERE t1.event='1600m' AND t1.time = (SELECT MAX(time)
                                      FROM Times t2
                                      WHERE t2.event='1600m' AND
                                            t1.fname = t2.fname AND
                                            t1.lname = t2.fname)
ORDER BY t1.time
LIMIT 10;

这就是为什么我更喜欢DBMS,如果您使用的非聚合列不在
group by
子句:-)@pax-amen中,那么DBMS会抱怨不已。这里存在1000个Q,因为没有错误。MySQL确实需要一个“免责声明”语法来让它通过,例如
select*。。。x,y的宽大分组
谢谢,查询工作正常。在给你打分之前,让我再测试一下answer@phprunner你得到了什么输出?没有。对于
kyle rummens
查询返回的行数为零,仍然没有最短时间扫描您是否将示例数据作为文本发布?如我附加的图像,但仅作为文本?是的,请将其添加到您的问题中。不是结果。您的原始样本数据。