sql >> Database >  >> RDS >> Mysql

Eerst bestellen op specifieke veldwaarde

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.



  1. Wat te doen (of niet te doen) over de beste wachtstatistieken

  2. Many2many-veld invullen (odoo 8)

  3. Is er een Booleaans gegevenstype in Microsoft SQL Server zoals in MySQL?

  4. Android:Sqlite-fout - (1) bijna null:syntaxisfout