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

MySQL сортиране по някакъв списък

Тъй като 1 < 3 < 77 < 123 , прост ORDER BY id би било достатъчно.

Ако обаче искате да поръчате по този начин:77, 3, 123, 1 , тогава можете да използвате функция FIELD() :

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1) 
ORDER BY FIELD(id, 77, 3, 123, 1)

Ако заявката ви съответства на повече редове, отколкото сте посочили в FIELD

FIELD връща 0 когато ред не съвпада с нито един от идентификаторите, които изброявате, т.е. число, по-малко от числата, върнати за изброените идентификатори. Това означава, че ако вашата заявка съвпада с повече редове от тези, които изброявате, тези редове ще се появят първи. Например:

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 77, 3, 123, 1)

В този пример редът с идентификатор 400 ще се появи първи. Ако искате тези редове да се показват последни, просто обърнете списъка с идентификатори и добавете DESC :

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 1, 123, 3, 77) 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. Топ 5 MySQL GUI инструменти (безплатни и платени)

  2. задайте сесия в обект на сесия на SQLAlchemy

  3. как да намерите точно данни между избраната диагонална област в mysql заявка

  4. Как да отворя DB връзка в Openshift?

  5. Основите на настройката на MySQL на специализирани сървъри