#mysql
#mysql
Вопрос:
У меня есть следующая таблица, в которой мне нужно найти максимальное количество потребителей компании. У меня есть таблица пользователей и таблица компаний.Пользователи могут использовать множество продуктов разных компаний, и у компании может быть много пользователей в качестве потребителей. user_id — это внешний ключ, используемый в этой таблице из таблицы users, а company_id — это foreign_key, используемый из таблицы company
ТАБЛИЦА consumers_company
Предположим, у нас есть следующие данные:-
user_id | company_id
---------------------
6 | 1
6 | 2
7 | 5
8 | 8
8 | 1
8 | 8
Теперь, как мы видим, у компании 1 максимальное количество пользователей.Я использую этот запрос, чтобы найти те компании, у которых пользователей больше 1.
SELECT *
FROM consumers_company
WHERE company_id IN (
SELECT company_id
FROM consumers_company
GROUP BY company_id
HAVING COUNT(company_id) > 1)
Мой вывод:-
user_id | company_id
--------------------
6 | 1
8 | 8
8 | 1
8 | 8
Требуемый вывод:-
user_id | company_id
--------------------
6 | 1
8 | 1
Я новичок в MySQL. Пожалуйста, помогите мне.
Комментарии:
1. как вы логически получаете требуемый результат простым языком?
2. У вас нет первичного ключа. Это может оказаться проблематичным.
Ответ №1:
select * from consumers_company where company_id in
(select company_id from consumers_company group by company_id
order by count(distinct user_id) desc limit 1)
Сначала найдите компанию, которая имеет самое уникальное отношение user_id в consumers_company
таблице.И выдает всех своих потребителей.
Комментарии:
1. Я уже нашел это, но сейчас у меня возникли проблемы с дальнейшим поиском компании, у которой максимальное количество потребителей.
2. Просто используйте вспомогательный запрос, это идентификатор компании, который имеет максимальное количество потребителей