sql >> Database >  >> RDS >> Mysql

ORDER DOOR afzonderlijk positieve en negatieve getallen in MySQL-statement

Kan SIGN gebruiken om de positieve getallen bovenaan te sorteren, neem dan de absolute waarde met ABS om de gewenste ASC/DESC te krijgen.

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

BEWERKEN

Zoals Nahuel opmerkte, sorteert het bovenstaande de nullen naar het midden tussen positief en negatief. Om ze in plaats daarvan te groeperen met de positieven, kunt u een CASE . gebruiken in plaats daarvan (of, als uw kolom alleen gehele getallen is, de enigszins magische SIGN(col + 1) )

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


  1. Oproep naar opgeslagen procedure , wanneer procedurenaam in een variabele in mysql

  2. PIVOT gebruiken in SQL Server 2008

  3. Hoe een sql-query in een array in yii . te plaatsen

  4. SQL Server 2016:een database maken