Смешивание групповых столбцов без групповых столбцов - PullRequest
0 голосов
/ 11 ноября 2009

Я получил эту ошибку, и я не уверен, как с ней работать. Простые объяснения приветствуются. Ошибка:

1140: Смешивание столбцов GROUP (MIN (), MAX (), COUNT (), ...) без столбцов GROUP недопустимо, если отсутствует предложение GROUP BY - SELECT email, COUNT (*) AS records_found ОТ (emails) ГДЕ email = 'Адрес электронной почты'

Ответы [ 3 ]

1 голос
/ 11 ноября 2009

Если вы хотите использовать агрегатные функции (MIN, MAX, COUNT), вам необходимо предоставить MySQL информацию о столбцах, для которых нужно выполнить агрегацию. Например, в вашем случае вы должны использовать

SELECT email, COUNT(*) AS records_found FROM (emails) GROUP BY email 

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

SELECT COUNT(*) AS records_found FROM (emails) WHERE email = 'Email Address'
1 голос
/ 11 ноября 2009

Вы не можете использовать агрегатные функции (например, count (*)) с неагрегированными столбцами (например, электронная почта), если вы не включите предложение group by. Я предполагаю, что вы намереваетесь попытаться получить количество каждого отдельного электронного письма в таблице электронных писем, что потребует добавления в ваш запрос предложения group by, например:

select email, count(*) as records_found
from (emails) 
where email = 'Email Address'
group by email

Учитывая, что вы используете условие where, которое будет обеспечивать отдельное отдельное электронное письмо, вы можете задаться вопросом, зачем оно требуется - вы также можете просто добавить агрегатную функцию вокруг столбца электронного письма, поскольку знаете, что оно отличается: *

select max(email), count(*) as records_found
from (emails) 
where email = 'Email Address'
0 голосов
/ 11 ноября 2009

У вас есть электронная почта в выводе, но вы не группируете по ней. Скорее всего, вы хотите удалить столбец электронной почты из выходных данных, поскольку он есть в предложении WHERE:

SELECT COUNT (*) AS records_found ОТ (электронные письма) ГДЕ электронная почта = 'Адрес электронной почты'

...