Der er også MySQL FIELD
funktion
.
Hvis du ønsker komplet sortering for alle mulige værdier:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Hvis du kun bekymrer dig om, at "kerne" er først, og de andre værdier er ligegyldige:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Hvis du vil sortere efter "kerne" først, og de andre felter i normal sorteringsrækkefølge:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Der er dog nogle forbehold her:
For det første er jeg ret sikker på, at dette kun er mysql-funktionalitet - spørgsmålet er tagget mysql, men man ved aldrig.
For det andet skal du være opmærksom på, hvordan FIELD()
virker:det returnerer en-baseret indeks af værdien - i tilfælde af FIELD(priority, "core")
, returnerer den 1, hvis "kerne" er værdien. Hvis værdien af feltet ikke er på listen, returnerer det nul . Det er derfor DESC
er nødvendigt, medmindre du angiver alle mulige værdier.