使用 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
,其中包含RaceID
和TotalTime
列,如何检索每个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的主要内容,如果未能解决你的问题,请参考以下文章
sql语句select group by order by where一般先后顺序
sql语句select group by order by where一般先后顺序
SQL语句中,如果有group by 和order by两个语句,是先分组还是先排序?