dedlfix: SELECT IN () mit definierter Reihenfolge

Beitrag lesen

Tach!

Beispiel 4711,21,365
Nun lese ich das Cookie wieder, dazu die Orte aus der Datenbank und möchte den aktuellsten Ort (4711) zuerst haben.
WHERE id in ( 4711,21,365 )
liefert aber nicht die gewünschte Folge. Wie geht das mit SQL?

Die Where-Klausel interessiert sich nicht für eine Reihenfolge der Datensätze. Sie sorgt nur dafür, dass die Datensätze überhaupt selektiert werden. Dazu kann ein Index verwendet werden oder ein Full-Table-Scan. In einem Index liegen die Daten sortiert vor, beim FTS nicht. Es ist also undefiniert, wie die Daten in die Ergebnismenge kommen. Sortieren geht über ORDER BY, und da brauchst du nun eine Funktion, die einen sortierfähigen Wert gemäß der von angegebenen Reihenfolge liefert. MySQL/MariaDB kennt die beiden Funktionen FIELD() und FIND_IN_SET(). Ich habs jetzt nicht probiert, aber die Beschreibung im Handbuch sieht so aus, als ob sie zielführend sind.

dedlfix.