(Это новый ответ, основанный на комментарии и глядя на скрипку.)
Проблема здесь в том, как MySQL обрабатывает агрегатные функции - которая является нестандартным способом и отличается, то все остальные.
mysql позволяет использовать агрегатные функции (count() является примером агрегатной функции) без группы. Для всех (или большинства?) Других реализаций sql требуется группа, когда вы используете count (*). Когда у вас есть группа, вы должны сказать диапазон в группе (например, по имени). Также каждый столбец должен находиться в диапазоне или в результате функции агрегата.
СКОЛЬКО у вас нет диапазона mysql принимает всю таблицу, и поскольку у вас есть столбец, который не является результатом агрегатной функции или диапазона (в этом случае имя), mysql делает что-то, чтобы сделать этот столбец результат совокупной функции. Я не уверен, что в mysql указано, что он делает - скажем, «max()». (Достаточно уверен, что это max()). Таким образом, реальный sql, который выполняется, составляет
SELECT ANY_VALUE(name), COUNT(*)
FROM CUSTOMER
Таким образом, вы видите только одно имя.
MySQL документация - http://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
После прочтения выше, я вижу, что MySQL будет использовать функцию ANY_VALUE()
агрегированных по умолчанию для столбцов, которые не находятся в диапазоне.
Если вы просто хотите, общее количество клиентов по каждой строке вы могли бы сделать это
SELECT DISTINCT NAME, COUNT(NAME) OVER() AS CustomerCount
FROM CUSTOMER
В этом случае вам не понадобится GROUP BY синтаксиса. Под обложками он, вероятно, делает то же самое, что и ответ @GordonLinoff.
Я добавил это, потому что, возможно, он разъясняет, как работает группа.
Какая ошибка? – nicomp
Предположительно, вы используете SQL Server. В своей конфигурации по умолчанию MySQL не генерирует ошибку. –
Фактически я верю, что это вернет общий счет вместе с именем первого клиента. Нам нужен полный список имен клиентов, каждый из которых совпадает с общим количеством клиентов. Поэтому я не понимаю, почему полный список имен пользователей рушится при использовании совокупности Count – nsledeski