sql >> Base de Datos >  >> RDS >> Mysql

Error de sintaxis o infracción de acceso:1055 La expresión n.º 8 de la lista SELECT no está en la cláusula GROUP BY y contiene una columna no agregada

Esto es algo nuevo en MySQL 5.7 y es una advertencia de que su consulta es ambigua.

Considere la siguiente tabla:

id    |   name    |   age    |   points
--------------------------------------------
1         Bob         21         1
2         James       14         1
3         Bob         21         3
4         James       14         2
5         Casey       17         3

Si hiciste la siguiente consulta:

SELECT name, age, SUM(points) FROM scores GROUP BY name

Luego el name La columna se utiliza para agrupar. Tenga en cuenta que age puede tener varios valores, por lo que es "no agregado". Tienes que hacer algo para colapsar esos valores.

El comportamiento en 5.6 y versiones anteriores consistía simplemente en elegir el primero según el orden de clasificación, aunque a veces esto era impredecible y fallaba. En 5.7 te impiden hacerlo en primer lugar.

La solución aquí es agrupar eso también, o aplicar un operador agregado como MIN() a ella.