2013-10-24 4 views
0

мне нужно знать COUNT из запроса, а также один и тот же запрос с предложением HAVINGMySQL COUNT с и без предложения HAVING

В качестве иллюстрации (не реального случая, но иллюстративный), если таблица pupilTable содержит список ученика и их класса, и я хочу знать, количество классов, а также число классов с более чем 25 детей:

Я знаю, что я могу получить общее количество классов:

SELECT COUNT(*) AS NumAllClasses FROM pupilTable GROUP BY class 

Я знаю, что могу получить число больших классов с условием использования:

SELECT COUNT(*) AS NumBigClasses FROM pupilTable GROUP BY class HAVING COUNT(pupil) > 25 

Есть простой (один запрос) способ получения и в то же время? Google не был моим другом :(

Edited добавить наглядные данные

+0

Я думаю, что 2 запросов не требуется. – jacouh

+0

Возможно, это может быть разрешено в одной инструкции SELECT. Однако попробуйте предоставить образцы данных и ожидаемый результат, чтобы подтвердить это. –

ответ

0

Без проверки:

SELECT COUNT(*) AS count1 FROM table WHERE condition UNION ALL 
SELECT COUNT(*) AS count2 FROM table WHERE condition HAVING second-condition 

Но обратите внимание, что я предполагаю, что вторая метка будет теряться, так что вы будете иметь как Count- NRS вернулся под маркой count1

+1

'UNION ALL' будет решением. – Antoniossss

+0

@Antoniossss Вы абсолютно правы, UNION иначе разделил бы случай, когда оба запроса возвращают такое же количество строк. – JBA

0

Вы можете пользователя следующий запрос:

select count(users.id) count1, count(u.id) count2 from users left join users u on users.id = u.id and u.fname = "abc" where users.id > 10 

Здесь я использовал два условия. Вам нужно внести соответствующие изменения в этот запрос, чтобы получить желаемый результат.

Здесь пользователь. и ты. являются условиями.

В вышеприведенном запросе

user.<condition1> : u.fname = "abc" 
u.<condition2> : users.id > 10 
Смежные вопросы