sql >> Database teknologi >  >> RDS >> Mysql

Bestil først efter specifik feltværdi

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.



  1. Hvad er den mest effektive måde at kontrollere, om der findes en post i Oracle?

  2. Sådan bruges EXECUTE FORMAT ... BRUG i postgres-funktionen

  3. 4 måder at finde rækker, der indeholder små bogstaver i Oracle

  4. Sådan erstattes null-værdier med ukendt i Select Statement i SQL Server - SQL Server / TSQL Tutorial Del 111