首页 > 解决方案 > MYSQL 查找最常见的值

问题描述

我有以下查询可以正确解决租车中最常见的颜色。这工作正常。

SELECT Colour
FROM car 
INNER JOIN rents
ON car.PlateNr=rents.PlateNr
GROUP BY car.colour
ORDER BY COUNT(car.colour) DESC
LIMIT 1
;

但是,如果有2 个相同的最常见值(对于汽车颜色),则第二个会丢失。如何在 MYSQL 中选择两个最常见的值?我在其他 DBMS 中看到了 TOP 1 值选项,但我似乎在 MYSQL 中找不到等效项。

标签: mysql

解决方案


您可以先计算顶部颜色计数,然后使用它来选择具有相同值的记录。

请参阅SQL 小提琴

SET @top_colour_cnt = (select COUNT(car.colour) as max_color_cnt
                       from car
                       GROUP BY car.colour
                       ORDER BY COUNT(car.colour) DESC
                       LIMIT 1
                      );

SELECT @top_colour_cnt;

SELECT Colour, COUNT(car.colour)
FROM car 
GROUP BY car.colour
having COUNT(car.colour) = @top_colour_cnt
;

推荐阅读