Фильтрация SQL при подсчете

#mysql #sql #count

#mysql #sql #подсчет

Вопрос:

Большая признательность всем, кто может помочь или даже пытается.

Итак, у меня есть таблица GameHub, для каждой игры 1 запись указывает на человека, который играл в игру. Игровой центр :

 Game ID Person
    33  1234
    34  1234
    38  1234
    38  1235
    33  1235
  

Итак, 2 человека сыграли в игры 33 и 38, только 1 сыграл в игру 34.

Я изо всех сил пытался найти SQL, который будет захватывать только идентификаторы игр, в которые играли по крайней мере 2 человека.

Лучшее, что у меня есть (которое не работает), было бы :

 SELECT GameHub.gameid FROM 'GameHub' HAVING COUNT(GameHub.personid) > 1 
  

К сожалению, как бы просто это ни звучало, я просто не могу это взломать. Кто-нибудь видит мою ошибку?

Спасибо, Том.

  • Обновить —

Изменен :

 SELECT GameHub.gameid FROM GameHub HAVING COUNT(GameHub.personid) > 1
  

Но возвращается только «33», как я могу получить 33 и 38?

Ответ №1:

Вам не хватает Group by , который подскажет вам сгруппировать результат в соответствии с GameHub.gameid

 SELECT GameHub.gameid 
FROM 'GameHub' 
GROUP BY GameHub.gameid
HAVING COUNT(GameHub.personid) > 1 
  

Обновить
Если это ваш реальный sql, попробуйте добавить столбец, который вы добавили в Group by

 SELECT GameHub.gameid, 
       GameMeta.gamedate 
FROM GameHub JOIN GameMeta 
 ON GameHub.gameid = GameMeta.gameid 
GROUP BY GameHub.gameid, GameMeta.gamedate 
HAVING COUNT( GameHub.personid ) >1;
  

Комментарии:

1. Какова цель группировки по Person ?

2. Это было так быстро, что не позволило мне принять ответ! большое спасибо Чарльзу.

3. Привет, Чарльз, хочешь бонус? Мне нужно внутренне объединить этот результат с другой таблицей, есть мысли?

4. nvm даже у меня получилось это, моя проблема была в том, что я пытался присоединиться после получения результата, но я вставил туда между From и Group: ВЫБЕРИТЕ GameHub.gameid, GameMeta.gamedate Из GameHub ПРИСОЕДИНЯЙТЕСЬ К GameMeta На GameHub.gameid = GameMeta.gameid GROUP ПО GameHub.gameid ИМЕЯ COUNT (GameHub.personid ) > 1