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

ORDER BY oddzielnie dodatnie i ujemne liczby w instrukcji MySQL

Można użyć SIGN aby posortować liczby dodatnie do góry, a następnie weź wartość bezwzględną za pomocą ABS aby uzyskać żądany ASC/DESC.

SELECT * FROM theTable
ORDER BY SIGN(col) DESC, ABS(col)

EDYTUJ

Jak zauważył Nahuel, powyższe posortuje zera do środka między dodatnimi a ujemnymi. Aby zamiast tego pogrupować je z pozytywami, możesz użyć CASE zamiast tego (lub, jeśli twoja kolumna jest tylko liczbami całkowitymi, nieco magiczny SIGN(col + 1) )

SELECT * FROM theTable
ORDER BY 
    CASE WHEN col >= 0 THEN 1 ELSE 2 END,
    ABS(col)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pymysql Cursor.fetchall() / Fetchone() Zwraca Brak

  2. operacja usuwania blokuje całą tabelę w innodb

  3. Obsługa złożonych klauzul WHERE za pomocą konstruktora zapytań PHP

  4. sterownik mysql oledb

  5. DATE_FORMAT w zapytaniu w CodeIgniter przy użyciu Active Record nie działa