GROUP BY clause and contains nonaggregated column

  • Författare
  • Meddelande
Användarvisningsbild

Aurora

php-guru

  • Inlägg: 97
  • Blev medlem: 02 sep 2016, 20:47
  • Ort: Jönköping/Karlskrona

GROUP BY clause and contains nonaggregated column

Inlägg28 jan 2020, 16:56

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.
"En ring att sämja dem, en ring att främja dem, en ring att djupt i mörkrets vida riken tämja dem"

"Stressa som fan, men inte jättemycket"

Regex? (ノ◕ヮ◕)ノ

Vilka är online

Användare som besöker denna kategori: Google [Bot] och 5 gäster