sql >> データベース >  >> RDS >> Mysql

MySQLステートメントで正と負の数を別々に並べ替える

    SIGN を使用できます 正の数を上に並べ替えるには、絶対値を ABS 目的のASC/DESCを取得します。

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

    編集

    Nahuelが指摘したように、上記は0を正と負の中間にソートします。代わりに、それらをポジティブでグループ化するには、CASEを使用できます。 代わりに(または、列が整数のみの場合は、少し魔法のようなSIGN(col + 1)

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


    1. SQL:交差する構文エラー?

    2. 列名がさまざまなデータベースで予約されているキーワードであるかどうかを確認する方法

    3. PHPからmysqlデータベースにExcelファイルをインポートする方法

    4. 外部キーがある場合とない場合の参照の違いは何ですか