##ORDER BYで条件を指定する方法
###背景
とある処理でマスター情報がない場合、
ユニークキーのカラム「id
」には10桁の整数(マスターのidとかぶらない数値)を登録していた。
一覧の表示順が「id
」の降順だったため、
マスター情報がないデータを一覧の最後に表示したいが、最初に表示されてしまう...
そんなとき、以下のコードで解決したのでメモ。
メモ
select * from テーブル名 order by id < 1000000000 desc, id >= 1000000000 desc, id desc;
###単純な昇順降順
単純な昇順降順
SELECT * FROM テーブル名 ORDER BY id;
SELECT * FROM テーブル名 ORDER BY id desc;
idの昇順(asc)、降順(desc)に並び替わる。
デフォルトは昇順(asc)です。
明示的に示す場合は、ascをフィールド名の後ろに付け足します。
最終行をORDER BY id asc;
にしても結果は同じ。
###条件を指定
条件を指定
SELECT * FROM テーブル名 ORDER BY id = 1234 DESC;
id
が1234
のものが一番最初になる。
条件を指定
SELECT * FROM テーブル名 ORDER BY id <= 5 DESC;
id
が5
以下のものが一番上に並ぶ。
###まとめ
ORDER BY句には、条件(関数や評価式)が指定できる!以上!