DBAtlas · Atlas de operaciones de bases de datos

1055: Expression not in GROUP BY (only_full_group_by) (expresión que no está en GROUP BY)

MySQL

¿Qué significa?

Se usó en la lista SELECT o en HAVING/ORDER BY una columna que no está en GROUP BY ni envuelta en una función de agregación. Como el modo SQL ONLY_FULL_GROUP_BY está habilitado, MySQL rechaza esta expresión no determinista.

¿Por qué ocurre?

La consulta selecciona directamente una columna distinta de las agrupadas, pero esa columna puede no tener un único valor por grupo. ONLY_FULL_GROUP_BY está habilitado de forma predeterminada en MySQL 5.7+; las consultas que dependen del antiguo comportamiento permisivo de GROUP BY generan este error.

Cómo solucionarlo

Añada la columna a la lista GROUP BY o envuélvala en una función de agregación (MAX(), MIN(), ANY_VALUE()). Si sabe que el valor es realmente único dentro del grupo, ANY_VALUE() suprime la ambigüedad de forma deliberada. Deshabilitar el modo (quitar ONLY_FULL_GROUP_BY de sql_mode) en lugar de corregir la consulta reintroduce el riesgo de resultados erróneos; evítelo.

Abrir en DBAtlas →

Más entradas de este motor