Seit 1 <3 <77 <123
, eine einfache ORDER BY id
würde genügen.
Wenn Sie jedoch so bestellen möchten:77, 3, 123, 1
, dann könnten Sie die Funktion FELD()
:
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1)
ORDER BY FIELD(id, 77, 3, 123, 1)
Wenn Ihre Abfrage mit mehr Zeilen übereinstimmt, als Sie in FIELD
auflisten
FELD
gibt 0
zurück wenn eine Zeile mit keiner der von Ihnen aufgelisteten IDs übereinstimmt, d. h. eine Zahl, die kleiner ist als die für die aufgelisteten IDs zurückgegebenen Zahlen. Das bedeutet, wenn Ihre Abfrage mit mehr Zeilen übereinstimmt als die, die Sie auflisten, werden diese Zeilen zuerst angezeigt. Zum Beispiel:
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1, 400)
ORDER BY FIELD(id, 77, 3, 123, 1)
In diesem Beispiel die Zeile mit der ID 400
erscheint zuerst. Wenn Sie möchten, dass diese Zeilen zuletzt erscheinen, kehren Sie einfach die Liste der IDs um und fügen Sie DESC
hinzu :
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1, 400)
ORDER BY FIELD(id, 1, 123, 3, 77) DESC