1055 - La expresión n.° 1 de la lista SELECT no está en la cláusula GROUP BY y contiene la columna no agregada 'se

 Versión Navicat Premium 16

Este error se debe al modo predeterminado habilitado en la nueva versión de MySQL ONLY_FULL_GROUP_BY, es decir, la lista SELECT en la declaración GROUP BY solo puede contener funciones de agrupación o agregación, y no puede contener otras columnas. Y hay una columna en su declaración de consulta senior_two.score.student_id, que no está agrupada ni agregada, por lo que MySQL informa este error.

Oración original:

SELECT * FROM score LEFT JOIN course on score.course_id=course.course_id GROUP BY course.course_name

Error después de ejecutar:

1055 - La expresión #1 de la lista SELECT no está en la cláusula GROUP BY y contiene la columna no agregada 'senior_two.score.student_id' que no depende funcionalmente de las columnas en la cláusula GROUP BY; esto es incompatible con sql_mode=only_full_group_by

Hay dos formas de resolver este problema:

  1. Modo de cierre ONLY_FULL_GROUP_BY. Ingrese el siguiente comando en la interfaz :mysql> para cerrarlo:
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','');

        2. Agregue senior_two.score.student_idla columna a la lista GROUP BY para que MySQL sepa qué hacer con la columna. Por ejemplo, modifique su consulta para:

SELECT senior_two.score.student_id, AVG(senior_two.score.score) AS avg_score FROM senior_two.score GROUP BY senior_two.score.student_id;

Esta consulta agrupará por ID de estudiante y calculará el puntaje promedio para cada estudiante. De esta forma, MySQL no informará el error anterior.

Supongo que te gusta

Origin blog.csdn.net/m0_61615803/article/details/130076452
Recomendado
Clasificación