sql >> Databasteknik >  >> RDS >> Mysql

BESTÄLL EFTER positiva och negativa nummer separat i MySQL-satsen

Kan använda SIGN för att sortera de positiva talen till toppen, ta sedan det absoluta värdet med ABS för att få önskad ASC/DESC.

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

REDIGERA

Som Nahuel påpekade kommer ovanstående att sortera nollor till mitten mellan positiva och negativa. För att istället gruppera dem med de positiva, kan du använda en CASE istället (eller, om din kolumn bara är heltal, den något magiska SIGN(col + 1) )

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


  1. Kan MySQL på ett tillförlitligt sätt återställa säkerhetskopior som innehåller vyer eller inte?

  2. Summan av överlappande datumintervall i MySQL

  3. Microsoft Azure:Vad det är och hur ditt företag kan dra nytta av det

  4. Hur man gör en mysql-fulltextsökning med flera kolumner där partiella ord matchas