Mysql
 sql >> Database >  >> RDS >> Mysql

Esiste la capacità ANY_VALUE per mysql 5.6?

Stai abusando della famigerata estensione MySQL non standard per GROUP DA . L'SQL standard rifiuterà sempre la tua query, perché stai menzionando colonne che non sono aggregate e non sono menzionate in GROUP BY . Nel tuo sistema di sviluppo stai cercando di aggirare il problema con ANY_VALUE() .

In produzione, puoi disattivare la ONLY_FULL_GROUP_BY Modalità MySQL . Prova a fare questo :

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

Ciò consentirà a MySQL di accettare la tua richiesta.

Ma guarda, la tua domanda non è proprio corretta. Quando riesci a convincerlo a funzionare, restituisce una riga scelta a caso dalle images tavolo. Questo tipo di indeterminazione spesso crea confusione tra gli utenti e il tuo team di supporto tecnico.

Perché non migliorare la query, in modo che scelga un'immagine particolare. Se le tue images la tabella ha un id di incremento automatico colonna puoi farlo per selezionare la "prima" immagine.

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

Ciò restituirà una riga per paese con un'immagine prevedibile mostrata.