Er is ook de MySQL FIELD
functie
.
Als u alle mogelijke waarden volledig wilt sorteren:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Als je er alleen maar om geeft dat "kern" voorop staat en de andere waarden er niet toe doen:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Als u eerst op "kern" wilt sorteren en de andere velden in de normale sorteervolgorde:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Er zijn echter enkele kanttekeningen:
Ten eerste ben ik er vrij zeker van dat dit alleen-mysql-functionaliteit is - de vraag is getagd met mysql, maar je weet maar nooit.
Ten tweede, let op hoe FIELD()
werkt:het retourneert de één-gebaseerde index van de waarde - in het geval van FIELD(priority, "core")
, retourneert het 1 als "core" de waarde is. Als de waarde van het veld niet in de lijst staat, retourneert het nul . Dit is waarom DESC
is nodig, tenzij u alle mogelijke waarden opgeeft.