Axel Richter: [MySQL] Nach zwei Attributen sortieren...

Beitrag lesen

Hallo,

Ich habe eine Tabelle, in der es unteranderem eine Spalte "sysname" (VARCHAR) und eine Spalte "name" gibt. "sysname"-Werte können auch NULL sein. Nun möchte ich gerne zunächst alle Zeilen, bei denen "sysname" ungleich NULL ist alphabetisch sortiert nach "name", und dann alle Zeilen, bei dennen "sysname" gleich NULL ist alphabetisch sortiert nach "name" ausgeben.

Beispiel:
sysname1  Andreas
sysname3  Martin
sysname2  Ralf
NULL      Christina
NULL      Benedikt
NULL      Simone

Kann mir jemand sagen, wie ich das mit einiger einzigen Abfrage bewältige?

Die Abfrage müsste in je einer zusätzlichen Spalte einmal die Namen ohne sysname und zum Anderen die Namen mit sysname separieren. Sortiert wird dann nach Name_ohne_sysname, Name_mit_sysname. Da die NULL-Werte der Namen_ohne_sysname nach oben sortiert werden, und hier (gleiche Werte NULL) die Sortierung nach Name_mit_sysname greift, sollte die gewünschte Reihenfolge entstehen.

SELECT sysname, name, IF([sysname] IS NULL,[name],NULL) AS nosn, IF([sysname] IS NOT NULL,[name],NULL) AS nmsn
FROM TabelleN
ORDER BY IF([sysname] IS NULL,[name],NULL), IF([sysname] IS NOT NULL,[name],NULL);

viele Grüße

Axel