Sie müssen alle Spalten des SELECT setzen im Feld GROUP BY oder verwenden Sie Funktionen, die die Ergebnisse auf einen einzigen Wert komprimieren (wie MIN , MAX oder SUM ).
Ein einfaches Beispiel, um zu verstehen, warum das passiert:Stellen Sie sich vor, Sie haben eine Datenbank wie diese:
FOO BAR
0 A
0 B
und Sie führen SELECT * FROM table GROUP BY foo aus . Das bedeutet, dass die Datenbank als Ergebnis eine einzelne Zeile mit der ersten Spalte 0 zurückgeben muss um den GROUP BY zu erfüllen aber es gibt jetzt zwei Werte von bar zur Auswahl. Welches Ergebnis würden Sie erwarten - A oder B ? Oder sollte die Datenbank mehr als eine Zeile zurückgeben und damit gegen den Vertrag von GROUP BY verstoßen ?