Hallo,
Das war eigentlich nicht meine Frage. Ich habe in meiner Spaltenliste ja gar keine Aggregatsfunktion und brauche auch keine.
inzwischen :-) Du benötigst inzwischen auch (im äußeren SELECT) kein GROUP BY.
Meine Frage war jetzt, ob es aber möglich ist,
GROUP BY
_ohne_ Aggregatsfunktion in der Projektion zu nutzen.
ja. Gruppiere nach allen Spalten, die in der Spaltenliste vorkommen :-)
Um bei dem bisherigen Beispiel zu bleiben:
SELECT id,wert
FROM test
GROUP BY wert
> Wie ist das Verhalten dieser Abfrage definiert?
Standard: Fehler
MySQL: gib in jeder Gruppe mit gleichen wert-Werten eine beliebige id aus der Gruppe aus - wie ich bereits schrieb.
ohne Aggregatsfunktion in korrektem SQL:
~~~sql
SELECT
id,
wert
FROM
test
GROUP BY
wert,
id
Ich konnte nur mit
HAVING
noch nicht sehr viel anfangen. Für mich war HAVING quasi dieWHERE
-Klausel für alle Datensätze, die den gleichen Wert aufwiesen.
HAVING ist nicht die "WHERE-Klausel" innerhalb einer Gruppe, sondern die Einschränkung für die Datensätze *nach* dem Gruppieren, d.h. also welche Gruppen in die Ergebnismenge sollen.
Freundliche Grüße
Vinzenz