2015-03-18 4 views
-1

Я пытаюсь получить количество каждого continent из таблицы с именем Country:Попытки получить счет для каждого уникального COUNTRYCODE в MySQL

SELECT continent, count(*) totalcount from Country 

Он возвращает общее количество записей в таблице и только существует один континент.

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

+0

Пожалуйста, прочитайте справочный центр и по крайней мере формате ваш пост должным образом. –

ответ

0

Если у вас есть функция агрегации, все из другие выбранные столбцы должны быть скоплениями или упоминаться в группе. MySQL, хотя он имеет непринужденный подход к этому требованию, вы все равно должны всегда пытаться это сделать. Добавление

GROUP BY `continent` 

будет работать в этом случае

Перечень агрегирования функций

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

который упоминает

, если вы используете функцию в заявлении группы, содержащей no GROUP BY claus е, это эквивалентно группировке на всех строках

еще некоторое чтение на реализацию MySQL о group by

http://dev.mysql.com/doc/refman/5.1/en/group-by-handling.html

0

Вам нужна группа по статье:

SELECT continent,count(*) totalcount from Country group by continent 
+0

Спасибо всем, что я только что видел эти ответы после того, как узнал об этом несколько раз, но я ценю, что вы не спеша помогаете –

0

Количество инструкций (*) является инструкцией агрегации и, следовательно, он будет возвращать только одну строку. Вы должны попробовать что-то вроде

SELECT continent, count(*) totalcount FROM Country GROUP BY continent 

для того, чтобы иметь число стран в каждом континенте ...

редактировать: слишком поздно;)

Смежные вопросы