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

Jak zdefiniować zamówienie niestandardowe w klauzuli ORDER BY?

Użyj funkcji POLE:-

SELECT *
FROM articles
WHERE article.category IN (1, 57, 67, 78)
ORDER BY FIELD(article.category, 1, 67, 78, 57)

EDIT - Jeśli nie zostanie znaleziony, zwróci 0, więc jeśli chcesz najpierw posortować 2 wartości, prawdopodobnie po prostu umieść te 2 w funkcji, ale odwrócone i sortuj malejąco.

SELECT *
FROM articles
WHERE article.category IN (1, 57, 67, 78)
ORDER BY FIELD(article.category, 67, 1) DESC

Spowoduje to umieszczenie kategorii 1 na pierwszym miejscu, następnie kategorii 67, a następnie wszystkich innych



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql wybierz z n ostatnich wierszy

  2. Konwertujesz czas AM/PM na format 24-godzinny przy użyciu PHP lub MySQL?

  3. Jak zaprojektować hierarchiczny system kontroli dostępu oparty na rolach?

  4. Wykonaj WHERE ID IN z podzapytaniem, które zwraca ciąg identyfikatorów

  5. Liczba stronicowania CakePHP nie pasuje do zapytania?