使用 WHERE、GROUP BY 和 ORDER BY

Posted

技术标签:

【中文标题】使用 WHERE、GROUP BY 和 ORDER BY【英文标题】:Using WHERE, GROUP BY and ORDER BY 【发布时间】:2013-05-24 15:26:08 【问题描述】:

我有一个表RacesTimes,其中包含RaceIDTotalTime 列,如何检索每个RaceID 的最低TotalTime

我试过了(也很少有其他变化,但没有结果)

SELECT * 
FROM `RacesTimes` 
GROUP BY `RaceID` 
ORDER BY `TotalTime` ASC  

但它给了我从 RaceID 插入的第一行,而不是从 RaceID 插入的最低行 TotalTime

【问题讨论】:

【参考方案1】:
SELECT MIN(TotalTime), RaceID
FROM RacesTimes
GROUP BY RaceID
ORDER BY MIN(TotalTime) ASC

请注意,mysql 允许您使用的语法:其他 RDBMS 不允许。

这表示“给我每个 RacedID 的最短 TotalTime”

【讨论】:

谢谢!但我还需要其他东西:我想从该最小行中选择所有内容,您可以修改该查询吗?我试过了,但它是从插入的第一行中选择的。 看这个:***.com/questions/16733284/… 这是 HSQL 但同样的想法也适用(我最后一次查询) 我按照你所说的做了:SELECT ANY(RaceID), MIN(TotalTime), RaceID FROM RacesTimes GROUP BY RaceID 但它给了我“#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以便在第 1 行的 '( RaceID ), MIN( TotalTime ), RaceID FROM RacesTimes GROUP BY RaceID ' 附近使用正确的语法”,可能它无法识别任何函数。 @NistorConstantin:MySQL 没有任何功能。我的意思是我的第三个查询对不起。 ANY 在编辑中添加。哎呀【参考方案2】:

你需要一个aggregate function,特别是MIN:

SELECT RaceID, MIN(TotalTime)
FROM RaceTimes
GROUP BY RaceID

【讨论】:

【参考方案3】:

表中的其他列也很少,如何将它们全部提取(使用分组的 MIN 列)?

【讨论】:

以上是关于使用 WHERE、GROUP BY 和 ORDER BY的主要内容,如果未能解决你的问题,请参考以下文章

order by 和 group by 的区别?

sql语句select group by order by where一般先后顺序

sql语句select group by order by where一般先后顺序

SQL语句中,如果有group by 和order by两个语句,是先分组还是先排序?

SQL语句中,如果有group by 和order by两个语句,是先分组还是先排序?

SQL group by 和 order by wherehaving