sql >> Database teknologi >  >> RDS >> Mysql

BESTIL EFTER positive og negative tal separat i MySQL-sætning

Kan bruge SIGN for at sortere de positive tal til toppen, tag derefter den absolutte værdi med ABS for at få den ønskede ASC/DESC.

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

REDIGER

Som Nahuel påpegede, vil ovenstående sortere 0'er til midten mellem positive og negative. For i stedet at gruppere dem med de positive, kan du bruge en CASE i stedet (eller, hvis din kolonne kun er heltal, den let magiske SIGN(col + 1) )

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


  1. R12.2 Udgavebestemmelse og opsætning

  2. Kører en lagret procedure fra crontab

  3. Dropdown med fagforeningsforespørgsel

  4. SQL Where-klausul med flere værdier