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

MySQL sortuj według jakiejś listy

Od 1 < 3 < 77 < 123 , prosty ORDER BY id wystarczy.

Jeśli jednak chcesz zamówić w ten sposób:77, 3, 123, 1 , możesz użyć funkcji FIELD() :

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

Jeśli Twoje zapytanie pasuje do większej liczby wierszy niż podajesz w FIELD

FIELD zwraca 0 gdy wiersz nie pasuje do żadnego z wymienionych identyfikatorów, tj. liczba mniejsza niż liczby zwrócone dla wymienionych identyfikatorów. Oznacza to, że jeśli zapytanie pasuje do większej liczby wierszy niż wymienione, te wiersze pojawią się jako pierwsze. Na przykład:

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

W tym przykładzie wiersz o identyfikatorze 400 pojawi się jako pierwszy. Jeśli chcesz, aby te wiersze pojawiały się jako ostatnie, po prostu odwróć listę identyfikatorów i dodaj 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. Spring Boot + docker-compose + MySQL:połączenie odrzucone

  2. Jak uzyskać rekordy bieżącego miesiąca w MySQL?

  3. PHP/MySQL Wstaw wartości puste

  4. Błąd MySQL:mysql_fetch_assoc() oczekuje, że parametr 1 będzie zasobem

  5. Przekroczono limit rekurencji w procedurze nierekurencyjnej