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

¿Existe la capacidad ANY_VALUE para mysql 5.6?

Está haciendo un mal uso de la notoria extensión no estándar de MySQL para GROUP POR . SQL estándar siempre rechazará su consulta, porque está mencionando columnas que no son agregados y no se mencionan en GROUP BY . En su sistema de desarrollo, está tratando de evitar eso con ANY_VALUE() .

En producción, puede desactivar el ONLY_FULL_GROUP_BY Modo MySQL . Intente hacer esto :

  SET @mode := @@SESSION.sql_mode;
  SET SESSION sql_mode = '';
  /* your query here */
  SET SESSION sql_mode = @mode;

Esto permitirá que MySQL acepte su consulta.

Pero mira, tu consulta no es realmente correcta. Cuando puede persuadirlo para que se ejecute, devuelve una fila elegida al azar de las images mesa. Ese tipo de indeterminación a menudo genera confusión entre los usuarios y el equipo de soporte técnico.

¿Por qué no mejorar la consulta, para que elija una imagen en particular? Si tus images la tabla tiene un autoincremento id columna puede hacer esto para seleccionar la "primera" imagen.

SELECT c.id, c.name, i.*
  FROM countries c
  LEFT JOIN (
       SELECT MIN(id) id, country_id
         FROM images
        GROUP BY country_id
       ) first ON c.id = first.country_id
  LEFT JOIN images i ON first.id = i.id

Eso devolverá una fila por país con una imagen predecible mostrada.