Je misbruikt de beruchte niet-standaard MySQL-extensie voor GROUP DOOR
. Standaard SQL zal uw zoekopdracht altijd afwijzen, omdat u kolommen vermeldt die geen aggregaties zijn en niet worden vermeld in GROUP BY
. In je ontwikkelsysteem probeer je dat te omzeilen met ANY_VALUE()
.
In productie kunt u de ONLY_FULL_GROUP_BY MySQL-modus uitschakelen . Probeer dit te doen :
SET @mode := @@SESSION.sql_mode;
SET SESSION sql_mode = '';
/* your query here */
SET SESSION sql_mode = @mode;
Hierdoor kan MySQL uw vraag accepteren.
Maar kijk, je vraag is niet echt correct. Wanneer je het kunt overtuigen om te starten, retourneert het een willekeurig gekozen rij uit de images
tafel. Dat soort onbepaaldheid veroorzaakt vaak verwarring bij gebruikers en uw technische ondersteuningsteam.
Waarom maakt u de zoekopdracht niet beter, zodat deze een bepaalde afbeelding kiest. Als uw images
tabel heeft een autoincrement id
kolom kunt u dit doen om de "eerste" afbeelding te selecteren.
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
Dat levert één rij per land op met een voorspelbare afbeelding.