Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Porządkowanie najpierw według określonej wartości pola

Istnieje również MySQL FIELD funkcja .

Jeśli chcesz dokonać pełnego sortowania dla wszystkich możliwych wartości:

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

Jeśli zależy Ci tylko na tym, że „rdzeń” jest na pierwszym miejscu, a inne wartości nie mają znaczenia:

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

Jeśli chcesz najpierw posortować według „rdzenia”, a pozostałe pola w normalnej kolejności sortowania:

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

Jest tu jednak kilka zastrzeżeń:

Po pierwsze, jestem prawie pewien, że jest to tylko funkcjonalność mysql — pytanie jest oznaczone jako mysql, ale nigdy nie wiadomo.

Po drugie, zwróć uwagę, jak FIELD() działa:zwraca indeks oparty na jedynce wartości - w przypadku FIELD(priority, "core") , zwróci 1, jeśli "core" jest wartością. Jeśli wartości pola nie ma na liście, zwraca zero . Dlatego DESC jest konieczne, chyba że określisz wszystkie możliwe wartości.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj całkowitą liczbę wierszy, gdy używasz LIMIT?

  2. Jak mogę sprawdzić, kiedy tabela MySQL była ostatnio aktualizowana?

  3. Wprowadzenie do wysokiej dostępności baz danych dla MySQL i MariaDB

  4. Śledzenie powiadomień na Facebooku (DB Design)

  5. Pojedyncze cudzysłowy, podwójne cudzysłowy i znaki wsteczne w MySQL