Счетчик SQL возвращает ошибку, когда нет предложения GROUP BY - PullRequest
3 голосов
/ 22 марта 2012

Почему я получаю сообщение об ошибке этого запроса на моем работающем сервере, но не на локальном хосте wamp?

SELECT 
type as type, 
COUNT(*) AS total

FROM page AS p
WHERE p.parent_id = p.page_id

сообщение об ошибке:

SQLSTATE [42000]: синтаксисошибка или нарушение прав доступа: 1140 Смешивание столбцов GROUP (MIN (), MAX (), COUNT (), ...) без столбцов GROUP недопустимо, если отсутствует предложение GROUP BY

Какя могу обойти это?

мой локальный хост вернет этот результат, который мне нужен,

type    total
page    16

1 Ответ

15 голосов
/ 22 марта 2012

При использовании агрегатной функции, такой как COUNT, необходимо включить предложение GROUP BY.

SELECT 
    type as type, 
    COUNT(*) AS total
FROM page AS p
WHERE p.parent_id = p.page_id
GROUP BY type

Насколько это работает локально, но не на вашем живом сервере; MySql не требует полного перечисления неагрегированных столбцов в предложении GROUP BY по умолчанию , но на вашем живом сервере, вероятно, включена опция ONLY_FULL_GROUP_BY.

...