You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL GROUP BY与AS使用问题:如何查询使用次数最多的机型

解决查询使用次数最多飞机机型的问题

嘿,我来帮你搞定这个问题~首先得说清楚你为啥会报错:你用GROUP BY Number DESC是不对的,GROUP BY的作用是指定分组的字段,而不是用来排序结果的,排序得用ORDER BY哦!

下面给你两种可行的解决方案,你可以根据自己的需求选择:

方法1:只返回单个最高次数的机型(适合无并列的情况)

在你原来的查询语句基础上,加上ORDER BY Number DESC来按次数降序排列,再用LIMIT 1取第一条结果就行:

SELECT Planes.type, COUNT(Planes.type) AS Number 
FROM Flights 
JOIN Planes ON Flights.idPlane = Planes.idPlanes 
GROUP BY Planes.Type
ORDER BY Number DESC
LIMIT 1;

这个方法简单直接,但要注意:如果有多个机型的使用次数都是最高的(比如假设777和787的次数都是4),它只会返回其中一个。

方法2:返回所有并列最高次数的机型

如果需要把所有次数并列第一的机型都查出来,可以用窗口函数RANK()来实现:

WITH RankedPlanes AS (
    SELECT 
        Planes.type, 
        COUNT(Planes.type) AS Number,
        -- 按次数降序排名,并列的会得到相同排名
        RANK() OVER (ORDER BY COUNT(Planes.type) DESC) AS rnk
    FROM Flights 
    JOIN Planes ON Flights.idPlane = Planes.idPlanes 
    GROUP BY Planes.Type
)
SELECT type, Number
FROM RankedPlanes
WHERE rnk = 1;

这里用CTE(公共表表达式)先给每个机型的次数排名,然后筛选出排名为1的记录,这样所有并列第一的机型都会被返回。

内容的提问来源于stack exchange,提问作者Brayn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:07:55