sql >> Databáze >  >> RDS >> Mysql

ORDER BY odděleně kladná a záporná čísla v příkazu MySQL

Může použít SIGN chcete-li kladná čísla seřadit nahoru, vezměte absolutní hodnotu pomocí ABS pro získání požadovaného ASC/DESC.

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

UPRAVIT

Jak zdůraznil Nahuel, výše uvedené seřadí 0 do středu mezi kladnou a zápornou hodnotou. Chcete-li je místo toho seskupit s pozitivy, můžete použít CASE místo toho (nebo, pokud je váš sloupec pouze celá čísla, lehce magický SIGN(col + 1) )

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


  1. Rozdíl MySql mezi dvěma časovými razítky v sekundách?

  2. Oracle (11.2.0.1) :Jak identifikovat řádek, který je aktuálně aktualizován příkazem UPDATE

  3. Chyba:R se nemůže připojit k MySQL

  4. Co je databáze Greenplum? Úvod do databáze velkých dat