Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:não está em GROUP BY


Você precisa ter um grupo completo por:
SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25

O SQL92 requer que todas as colunas (exceto agregações) na cláusula select façam parte da cláusula group by. O SQL99 afrouxa um pouco essa restrição e afirma que todas as colunas na cláusula select devem ser funcionalmente dependentes da cláusula group by. O MySQL por padrão permite group by parcial e isso pode produzir respostas não determinísticas, exemplo:
create table t (x int, y int);
insert into t (x,y) values (1,1),(1,2),(1,3);
select x,y from t group by x;
+------+------+
| x    | y    |
+------+------+
|    1 |    1 |
+------+------+

Ou seja um y aleatório é selecionado para o grupo x. Pode-se evitar esse comportamento configurando @@sql_mode:
set @@sql_mode='ONLY_FULL_GROUP_BY';
select x,y from t group by x; 
ERROR 1055 (42000): 'test.t.y' isn't in GROUP BY