MySQL Row больше появляются с одним и тем же результатом нескольких строк - PullRequest
0 голосов
/ 15 мая 2019

У меня есть запрос с подсчетом по какой-то группе, и я хочу получить большее число.Я могу сделать с заказом и ограничить 1, но у меня есть несколько результатов с тем же счетом, а затем не работает для меня.

Как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Если вы не собираетесь делать это с помощью оконных функций, вы можете сделать:

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
             ) ;
0 голосов
/ 15 мая 2019

С 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
)
...