Mysql
 sql >> база данни >  >> RDS >> Mysql

Първо подреждане по конкретна стойност на полето

Има и MySQL FIELD функция .

Ако искате пълно сортиране за всички възможни стойности:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")

Ако ви интересува само това, че "core" е първо и другите стойности нямат значение:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC

Ако искате първо да сортирате по „ядро“, а останалите полета в нормален ред:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority

Тук обаче има някои предупреждения:

Първо, почти съм сигурен, че това е функционалност само за mysql – въпросът е с етикет mysql, но никога не се знае.

Второ, обърнете внимание как FIELD() работи:връща едно-базиран индекс на стойността - в случай на FIELD(priority, "core") , ще върне 1, ако стойността е "core". Ако стойността на полето не е в списъка, то връща нула . Ето защо DESC е необходимо, освен ако не посочите всички възможни стойности.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli_stmt::bind_result():Броят на променливите за свързване не съвпада с броя на полетата в подготвеното изявление

  2. CONVERT_TZ – Как да промените часовата зона на MySQL в заявка

  3. MySQL 5.6 EOL съобщение

  4. Еквивалент на explode() за работа с низове в MySQL

  5. Предупреждение:PDO::__construct():[2002] Няма такъв файл или директория (опитва се да се свърже чрез unix:///tmp/mysql.sock) в