sql >> Databasteknik >  >> RDS >> Mysql

Ordning efter specifikt fältvärde först

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.



  1. MySQL-uppdateringstabell baserat på ett annat tabellvärde

  2. Katastrofåterställningsalternativ för PostgreSQL distribueras till ett hybridmoln

  3. Datamaskering i DB-applikationer

  4. Postgres-funktionen returnerar tabell som inte returnerar data i kolumner