MySQL(マイエスキューエル)

データベース

【MySQL】ソート(ORDER BY)時に特定の値を優先的(一番最初)に持ってくる方法

MySQLのソートについて

MySQLでレコードをソート(並び替え)して値を取得する場合、

SELECT * FROM テーブル名 ORDER BY カラム名 (昇順/降順)

というSQLクエリを実行しますね。

例えば、
物件テーブル(テーブル名:bukken)から、物件データ登録日(カラム名:created)の新しい順でソートで取得したい場合には,

SELECT * FROM bukken ORDER BY created DESC

というSQLを実行します。

逆に、物件データの登録日が古い順にソートしたい場合には、

SELECT * FROM bukken ORDER BY created ASC

とすればOKです。
※弊社、不動産サイトを作成する機会が多いので、物件検索システムの構築を意識して、例を上げています。

これであれば、誰でもすぐに掛けるSQLだと思います。

今回は、もう少しだけ面倒なSQLについて説明します。

特定の値を優先的に表示させてソートする

上記で、通常のソート方法について、簡単に説明しました。

ただ、ソートする際に、特定の値を優先的に表示させて、物件データを取得したいということもあります。

例えば、
先日、
物件テーブル(テーブル名:bukken)から、物件ステータス(入居中、空室、申込中、建築中)の項目でソートする場合に、
空室の物件を優先的(一番最初)に表示させてほしい、
という案件がありました。

このような場合には、
ORDER BY句に条件を指定すれば、簡単に対応できます。

・物件ステータスのカラム名を「status」、
・各値のコードを「入居中:10001」、「空室:10002」、「退去予定:10003」、「建築中:10004
とすると、

SELECT * FROM bukken ORDER BY status=10002, status ASC

というSQLクエリを実行します。

status=10002」という条件を追加することで、
「空室:10002」→「入居中:10001」→「申込中:10003」→「退去予定:10004」の順番にデータを並べることが可能になります。

因みに、
入居中:10001」の物件というのは、人が住んでいる物件の為、当然、入居者を募集することはできません。
そのような物件をユーザーに見せても意味が無いですよね!

そのような場合には、

SELECT * FROM bukken ORDER BY status>=10002, status ASC

という条件を設定することで、
「空室:10002」以上の物件を優先的にソート表示させることが出来るので、
「入居中:10001」の物件を一番最後に持ってくることも可能です。

知っていれば、誰でも掛ける簡単なSQLです。
よく使うSQLなので、もし知らなかった方は、この機会に覚えてしまっておいた方がいいです。

WordPress短期学習プログラム

関連記事

  1. Database(DB:データベース)

    データベース

    PostgreSQLをインストール

    PostgreSQLのインストールを開始案件でPost…

  2. MySQL(マイエスキューエル)

    データベース

    「Unknown collation: 'utf8mb4_unicode_ci'」というエラーが。。…

    あるサイトのサーバ移管作業を行っていた際の話です。データベース(M…

  3. Database(DB:データベース)

    データベース

    ON DUPLICATE KEY UPDATE

    CSVなどからデータを取得して、データベースへ取り込む際、良く…

  4. MySQL(マイエスキューエル)
  5. サーバー設定

    サーバー

    お名前.comのVPSサーバ(KVM)にデータベース(MySQL)をインストール

    PHPのインストールまで完了したので、データベース(MySQL)を…

  6. Database(DB:データベース)

    データベース

    DBのバックアップ

    弊社も今日で仕事納めです。休暇中に何かあると恐いの…

最近の記事

  1. Technology-Connection-Net
  2. ドメインにハイフンを使うのは日本人だけ?
  3. SSL(HTTPS)
  4. ドメインについて
  5. WP:WordPress(ワードプレス)
  6. ドメイン(domain)
  7. JPドメイン
  8. 高速(スピード)
  9. ブログアクセス
  10. 高速(スピード)
PAGE TOP