#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