Sie missbrauchen die notorischen Nicht-Standard-MySQL-Erweiterung für GROUP VON
. Standard-SQL wird Ihre Abfrage immer ablehnen, weil Sie Spalten erwähnen, die keine Aggregate sind und nicht in GROUP BY
erwähnt werden . In Ihrem Entwicklungssystem versuchen Sie, dies mit ANY_VALUE()
zu umgehen .
In der Produktion können Sie den ONLY_FULL_GROUP_BY MySQL-Modus deaktivieren . Versuchen Sie dies :
SET @mode := @@SESSION.sql_mode;
SET SESSION sql_mode = '';
/* your query here */
SET SESSION sql_mode = @mode;
Dadurch kann MySQL Ihre Abfrage akzeptieren.
Aber sehen Sie, Ihre Frage ist nicht wirklich korrekt. Wenn Sie es zum Ausführen überreden können, gibt es eine zufällig ausgewählte Zeile aus den images
zurück Tisch. Diese Art von Unbestimmtheit sorgt oft für Verwirrung bei Benutzern und Ihrem Team des technischen Supports.
Warum nicht die Abfrage verbessern, damit sie ein bestimmtes Bild auswählt? Wenn Ihre images
Tabelle hat eine autoincrement id
Spalte können Sie dies tun, um das "erste" Bild auszuwählen.
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
Dadurch wird eine Zeile pro Land mit einem vorhersagbaren Bild angezeigt.