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.
Más entradas de este motor
- 1553Cannot drop index needed in a foreign key constraint (no se puede eliminar un índice que necesita una restricción de foreign key)
- 3948Loading local data is disabled; this must be enabled on both the client and server sides (la carga de datos locales está deshabilitada; debe habilitarse en el cliente y en el servidor)
- 1075Incorrect table definition; there can be only one auto column and it must be defined as a key (definición de tabla incorrecta; solo puede haber una columna automática y debe definirse como clave)
- 1267Illegal mix of collations
- 1030Got error N from storage engine
- 1197Multi-statement transaction required more than 'max_binlog_cache_size' (la transacción de varias sentencias requirió más que 'max_binlog_cache_size')
- 1785Statement violates GTID consistency