@_Keitaro_

【MySQL】ORDER BYで条件を指定、任意の順番に並び替える!

この記事は最終更新日から3年以上が経過しています。

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;

id1234のものが一番最初になる。

条件を指定
SELECT * FROM テーブル名 ORDER BY id <= 5 DESC;

id5以下のものが一番上に並ぶ。

まとめ

ORDER BY句には、条件(関数や評価式)が指定できる!以上!

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
_Keitaro_
2015.12からWEB制作会社で、主にWEBシステム開発の仕事をしています。
karabiner
主にシステム開発・アプリ開発・ Webサイト制作を行う会社です

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
Azure AIを活用した機械学習に関する記事を投稿しよう!
~
フロントエンド強化月間 - 開発する上で知っておくべき知見を共有しよう
~