Andreas Görtz: GROUP BY prinzip? (MySQL)

Beitrag lesen

Hi Ilja,

»» [1]: "erste Zeile" gibt es in der Datenbank nicht, die Datensätze sind unsortiert - eine Sortierung kommt erst durch ORDER BY zustande.

wenn mich nicht alles täuscht meine ich mich zu erinnern, dass mysql bei einer gruppierung auch gleichzeitig sortiert.

nur die Ergebniszeilen. Aus den nicht gruppierten Zeilen kann der MySQL-Server tatsächlich einen beliebigen Wert zurückgeben:

  
mysql> CREATE TEMPORARY TABLE test.t1 (c1 CHAR(1), c2 CHAR(1));  
Query OK, 0 rows affected (0.00 sec)  
  
mysql> INSERT INTO test.t1 (c1, c2) VALUES ('b', 'z'),('b','y'),('a','z'),('a','y');  
Query OK, 4 rows affected (0.00 sec)  
Records: 4  Duplicates: 0  Warnings: 0  
  
mysql> SELECT c1,c2 FROM test.t1 GROUP BY c1;  
+------+------+  
| c1   | c2   |  
+------+------+  
| a    | z    |  
| b    | z    |  
+------+------+  
2 rows in set (0.00 sec)  

die Sortierung kann man allerdings auch unterdrücken, indem man ORDER BY NULL angibt:

  
mysql> SELECT c1,c2 FROM test.t1 GROUP BY c1 ORDER BY NULL;  
+------+------+  
| c1   | c2   |  
+------+------+  
| b    | z    |  
| a    | z    |  
+------+------+  
2 rows in set (0.00 sec)  

Gruß,
Andreas.