[MySQL] Komplexes ORDER BY Problem

Tim C.

Erfahrenes Mitglied
Hi also ich frage mich grade ob es eine Möglichkeit gibt, eine MySQL Ausgabe nach dem letzten Wort eines Strings in einer Spalte zu sortieren oder ob ich da den Umweg über PHP gehen muss ?
Also die Frage ist, kann ich diret über ein spezielles MySQL Query erreichen, dass die Ausgabe nach dem letzten Wort eines Strings in einer Spalte sortiert wird.

Irgendwie doppelt gemoppelt da oben, aber hält ja bekantlich besser :p
 
Auszug aus mysql.com:

This function is multi-byte safe.
SUBSTRING_INDEX(str,delim,count)
Returns the substring from string str before count occurrences of the delimiter delim. If count is positive, everything to the left of the final delimiter (counting from the left) is returned. If count is negative, everything to the right of the final delimiter (counting from the right) is returned:
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'

als delimiter ein Leerschlag und du hast das letzte Wort! ;)
 
Mmm naja ich kapier das nicht so ganz erhlich gesagt. Also ich habe einen Namen mit mehreren Titeln vorne vor. Die Anzahl dieser kann allerdings variieren. Wie muss nun das ORDER BY SUBSTRING_INDEX aussehen, damit er nach dem letzten Wort (Nachnamen) aus der Spalte name sortiert ?
 
Also ich brauche schon ein SELECT * bzw ein paar Felder. Das macht mich alles ein wenig konfus ;)

//edit: Ah seh schon, kann ich einfach mit Komma getrennt vorran stellen, was ich noch brauche.
 
Zuletzt bearbeitet:
ja und? wo ist nun das Problem? wenn du noch andere Felder willst, schreib die doch rein...

SELECT feld1, feld2, feld3, SUBSTRING_INDEX(testfield, ' ', -1) AS letztes_wort FROM tabelle1 GROUP BY letztes_wort;

kannst auch den * reinschreiben... dann hast du halt alle + den substring. ist aber nicht zu empfehlen! :)
 
Zurück