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

特別なものを除いて、null値を他のすべての後に並べ替える

    よりシンプル:

    SELECT *
    FROM   tasks
    ORDER  BY (sort IS NOT DISTINCT FROM -1), sort;
    

    どのように?

    Postgresには適切なbooleanがあります タイプ(他のRDBMSとは異なります)。他のデータ型と同じように注文できます。また、他のデータ型と同様にNULLにすることができます。デフォルトのソート順は次のとおりです。

    FALSE (0)
    TRUE (1)
    NULL
    

    (sort IS NOT DISTINCT FROM -1) FALSEと評価されます -1を除くすべての値 -TRUEを評価します 最後に並べ替えます。 sortを追加するだけです セカンダリとしてORDER BY アイテム。

    同等の代替案:

    SELECT *
    FROM   tasks
    ORDER  BY (sort IS DISTINCT FROM -1) DESC, sort;
    

    db<>ここでフィドル
    古いsqlfiddle



    1. DBアプリケーションの監査証跡/変更履歴を残すための効果的な戦略?

    2. 各GROUPBYグループの最初の行を選択しますか?

    3. アイドル状態のmysql接続を終了する

    4. 列を一覧表示せずに、すべての列で同じ集計を実行するにはどうすればよいですか?