【问题标题】:MySQL Row more appear with multiple row same resultMySQL Row more 出现多行相同的结果
【发布时间】:2019-05-14 21:18:23
【问题描述】:

我有一个带有某个分组依据的计数的查询,我想获得更大的计数。我可以使用 order by 和 limit 1,但是我有多个结果具有相同的计数,然后对我不起作用。

我该如何解决这个问题?

【问题讨论】:

  • 你的MySql是什么版本的?
  • 5.6.但我也想知道H2数据库。
  • 请提供您的查询示例。

标签: mysql sql group-by count


【解决方案1】:

使用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
)

【讨论】:

    【解决方案2】:

    如果您不打算使用窗口函数执行此操作,您可以这样做:

    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
                 ) ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      相关资源
      最近更新 更多