Du missbrukar det ökända icke-standardiserade MySQL-tillägget till GROUP AV
. Standard SQL kommer alltid att avvisa din fråga, eftersom du nämner kolumner som inte är aggregat och inte nämns i GROUP BY
. I ditt dev-system försöker du komma runt det med ANY_VALUE()
.
I produktionen kan du stänga av ONLY_FULL_GROUP_BY MySQL Mode . Försök att göra detta :
SET @mode := @@SESSION.sql_mode;
SET SESSION sql_mode = '';
/* your query here */
SET SESSION sql_mode = @mode;
Detta gör att MySQL kan acceptera din fråga.
Men titta, din fråga är inte riktigt korrekt. När du kan övertala den att köra, returnerar den en slumpmässigt vald rad från images
tabell. Den typen av obestämdhet orsakar ofta förvirring för användare och ditt tekniska supportteam.
Varför inte göra frågan bättre, så att den väljer en viss bild. Om dina images
tabellen har ett autoinkrement id
kolumnen kan du göra detta för att välja den "första" bilden.
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
Det kommer att returnera en rad per land med en förutsägbar bild som visas.