Получение строк с одинаковым значением столбца

#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. Просто используйте вспомогательный запрос, это идентификатор компании, который имеет максимальное количество потребителей