Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Existe capacidade ANY_VALUE para o mysql 5.6?


Você está usando indevidamente a notória extensão MySQL não padrão para GROUP POR . O SQL padrão sempre rejeitará sua consulta, porque você está mencionando colunas que não são agregadas e não são mencionadas em GROUP BY . Em seu sistema dev, você está tentando contornar isso com ANY_VALUE() .

Na produção, você pode desativar o ONLY_FULL_GROUP_BY modo MySQL . Tente fazer isto :
  SET @mode := @@SESSION.sql_mode;
  SET SESSION sql_mode = '';
  /* your query here */
  SET SESSION sql_mode = @mode;

Isso permitirá que o MySQL aceite sua consulta.

Mas veja, sua consulta não está realmente correta. Quando você pode persuadi-lo a ser executado, ele retorna uma linha escolhida aleatoriamente das images tabela. Esse tipo de indeterminação geralmente causa confusão para os usuários e sua equipe de suporte técnico.

Por que não tornar a consulta melhor, para que ela escolha uma determinada imagem. Se suas images tabela tem um autoincremento id coluna você pode fazer isso para selecionar a "primeira" imagem.
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

Isso retornará uma linha por país com uma imagem previsível mostrada.