När man börjar köra SELECT tillsammans med GROUP BY så kan man stöta på följande felmeddelande:
Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'skolan.larare.lon' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Hänvisningar online antyder att lösningen är att stänga av "ONLY_FULL_GROUP_BY:
- Kod: Markera allt
sql_mode=only_full_group_by
Detta är inte en rätt lösning, då det bara ignorerar att vi skrivit en inkorrekt SQL-query.
Problemet i sig uppstår för att vi har fler delar i vår SELECT-sats än vad vi använder i vår GROUP BY. I fallet nedan klagar den på att "lon" inte används:
- Kod: Markera allt
SELECT avdelning, kompetens, ROUND(lon), COUNT(*) FROM larare
GROUP BY avdelning, kompetens
ORDER BY avdelning, lon ASC;
vilket går att lösa genom att lägga till lönen till vår gruppering, vilket fungerar bra i vårt fall:
- Kod: Markera allt
SELECT avdelning, kompetens, ROUND(lon), COUNT(*) FROM larare
GROUP BY avdelning, kompetens, lon
ORDER BY avdelning, lon ASC;
Mikael har mer information kring felmeddelandet i
följande forumtråd, för de som redan har stängt av det men behöver aktivera det igen.