MySQL Row更多出现,多行结果相同

时间:2019-05-14 21:18:24

标签: mysql sql group-by count

我有一个查询,其中有一个分组依据的计数,我想获得更大的计数。我可以按限制为1的顺序进行处理,但是我有多个具有相同计数的结果,因此对我不起作用。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果您不打算使用窗口功能来执行此操作,则可以执行以下操作:

SELECT group_id, COUNT(*) as cnt 
FROM table_name
GROUP BY group_id
HAVING cnt = (SELECT COUNT(*) 
              FROM table_name
              GROUP BY group_id
              ORDER BY COUNT(*) DESC
              LIMIT 1
             ) ;

答案 1 :(得分:0)

使用MySql 8+,您可以使用CTE获取最大计数,然后检索计数等于最大计数的所有记录。

但是,由于CTE在MySql 5.6中不可用,因此您需要使用子查询来获取最大计数,然后编写主查询,该查询将每个记录的计数与从记录中检索到的最大计数进行比较。子查询。

这是我写的查询。也许这不是最有效的解决方案,但可以达到预期的效果。

SELECT 
    group_id, COUNT(record_id) c 
FROM
    table_name
GROUP BY group_id
HAVING c IN (
    SELECT 
        MAX(sub_query.c)
    FROM
        (SELECT 
            group_id, COUNT(record_id) c
        FROM
            table_name
        GROUP BY group_id) AS sub_query
)