ORDER BY..... (Sortierreihenfolge frei definieren)
Fabienne22
- datenbank
Hallo,
gibt es eine Möglichkeit die Sortierreihenfolge in MYSQL (Vers. 4... und 5...) frei zu definieren?
Heißt:
SELECT * FROM tabelle ORDER BY spalte1 ASC
Das ASC will ich ändern in z.B. "A,C,B" (also zuerst alles, was mit A anfängt, dann mit C und erst danch die C-Sachen).
Oder:
Gibt es eine Möglichkeit, die varchar-ASC-Reihenfolge zu ändern, so dass "Leerzeichen" am Anfang erst am Ende stehen.
Grund: Ich habe eine varchar-Spalte, in der zum Teil nicht drinsteht. Und diese Elemente möchte ich am Ende sehen, aber trotzdem die ASC-Sortierung der gefüllten Elemente haben.
Besten Dank für Eure Antworten!
Fab
yo,
Grund: Ich habe eine varchar-Spalte, in der zum Teil nicht drinsteht. Und diese Elemente möchte ich am Ende sehen, aber trotzdem die ASC-Sortierung der gefüllten Elemente haben.
indem du zuerst nach einer pseudo-spalte sortierst.
SELECT ...
FROM ...
ORDER BY CASE
WHEN spalte IS NULL THEN 0
ELSE 1
END, spalte1 ASC
;
Ilja
Hallo nochmals,
SELECT ...
FROM ...
ORDER BY CASE
WHEN spalte IS NULL THEN 0
ELSE 1
END, spalte1 ASC
;
Das funktioniert bei mir nur bedingt: Jetzt wird der eine Eintrag, in dem sie spalte leer ist, ganz oben ausgegeben.
Was will ich machen?
name | prozentwert
Max | 12
Hans | 17
| 32
Fred | 16
Mike | 32
Tom | 32
Rauskommen soll "ORDER BY prozentwert DESC, name ASC", aber die leeren Einträge ganz unten!
Ziel-Ergebnis:
Mike, Tom, _, Hans, Fred, Max
und nicht _, Mike, Tom, .....
MYSQL sortiert Leerzeichen _vor_ den Buchstaben ein.
Hat jemand ne Idee?
Beste GRüße
Fab
Hi,
ORDER BY CASE
WHEN spalte IS NULL THEN 0
ELSE 1
END, spalte1 ASC
;Das funktioniert bei mir nur bedingt: Jetzt wird der eine Eintrag, in dem sie spalte leer ist, ganz oben ausgegeben.
Und auf die Idee, die Sortierreihenfolge fuer die Pseudo-Spalte dann einfach mal umzudrehen, kommst du nicht?
MfG ChrisB
Hi,
Und auf die Idee, die Sortierreihenfolge fuer die Pseudo-Spalte dann einfach mal umzudrehen, kommst du nicht?
Hm, manchmal steht man neben sich....
Lösung:
SELECT * FROM table
ORDER BY prozentwert DESC, CASE
WHEN name IS NULL OR name='' THEN 1
ELSE 0
END, name ASC;
Wichtig ist noch das name ASC am Ende: Sonst werden die nicht richtig sortiert.
Besten Dank ans Team!