5.3. Wie kann ich beim Sortieren eine bestimmte Reihenfolge festlegen?

Antwort von Christian Hamacher

Manchmal will man nicht nur 1 Wert als erstes/letzes zurückgeliefert bekommen, sondern eine komplett eigene Sortierreihenfolge festlegen. Hierzu lässt sich die Funktion FIND_IN_SET() verwenden. Man muss dazu allerdings die zu sortierenden Werte kennen.

mysql> select name          
    -> from test
    -> order by FIND_IN_SET(name,'Karin,Heidi,Andreas,Josef');
+---------+
| name    |
+---------+
| Karin   |
| Heidi   |
| Andreas |
| Josef   |
+---------+

In älteren (3.22.x) Versionen von MySQL muss man die Query anders formulieren.

mysql> select name, FIND_IN_SET(name,'Karin,Heidi,Andreas,Josef') as sort
    -> from test
    -> order by sort;
+---------+------+
| name    | sort |
+---------+------+
| Karin   |    1 |
| Heidi   |    2 |
| Andreas |    3 |
| Josef   |    4 |
+---------+------+