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

Erro de sintaxe ou violação de acesso:1055 A expressão nº 8 da lista SELECT não está na cláusula GROUP BY e contém uma coluna não agregada


Isso é uma novidade no MySQL 5.7 e é um aviso de que sua consulta é ambígua.

Considere a seguinte tabela:
id    |   name    |   age    |   points
--------------------------------------------
1         Bob         21         1
2         James       14         1
3         Bob         21         3
4         James       14         2
5         Casey       17         3

Se você fez a seguinte consulta:
SELECT name, age, SUM(points) FROM scores GROUP BY name

Em seguida, o name coluna é usada para agrupamento. Observe que age pode ter vários valores, por isso é "não agregado". Você precisa fazer algo para reduzir esses valores.

O comportamento no 5.6 e anterior era apenas escolher o primeiro dependendo da ordem de classificação, embora isso às vezes fosse imprevisível e falhasse. Em 5.7, eles estão impedindo você de fazer isso em primeiro lugar.

A solução aqui é agrupar isso também, ou aplicar um operador agregado como MIN() para isso.