Det finns också MySQL FIELD
funktion
.
Om du vill ha fullständig sortering för alla möjliga värden:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Om du bara bryr dig om att "kärnan" är först och de andra värdena spelar ingen roll:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Om du vill sortera efter "kärna" först, och de andra fälten i normal sorteringsordning:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Det finns dock några varningar här:
För det första är jag ganska säker på att detta är enbart mysql-funktionalitet - frågan är taggad mysql, men man vet aldrig.
För det andra, var uppmärksam på hur FIELD()
fungerar:det returnerar ett-baserat index av värdet - i fallet med FIELD(priority, "core")
, returnerar den 1 om "kärna" är värdet. Om värdet på fältet inte finns i listan returnerar det noll . Det är därför DESC
är nödvändigt om du inte anger alla möjliga värden.