2007年

MySQL で NULL を一番最後にして昇順にソートする このエントリーを含むはてなブックマーク

MySQL, SQL Add comments

2008.2.27 追記
コメントで教えていただきました下記方法で簡単にできました。
is null asc の指定と 通常の asc の指定をするのがポイントですね。

SELECT
  id,
  comment
FROM table
ORDER BY comment IS NULL ASC, comment ASC;

—–追記ここまで—–

MySQL で昇順にソートすると NULL は一番最初に来ます。
それを最後にできないかということで下記のようなSQL を考えてみました。

SELECT
  id,
  comment,
  CASE WHEN comment IS NULL
    THEN 10000
    ELSE ASCII(LEFT(comment,1))
  END AS dummy
FROM table
ORDER BY dummy ASC, COMMENT ASC

comment カラムを昇順でソートして、NULL の場合は一番最後に NULL がきます。
あまりスマートな方法ではないのですが、これで取り合えず NULL を最後にして昇順でソートするということができました。

ORACLE とかだと下記のように簡単にできますね。
ORDER BY comment ASC NULL LAST

NULLS FIRST
NULL 値を順序の最初にするソートを行なう
NULLS LAST
NULL 値を順序の最後にするソートを行なう

関連する投稿

3 Responses to “MySQL で NULL を一番最後にして昇順にソートする”

  1. MeijiK Says:

    MySQLの場合、以下のSQLでNULL LAST相当が実現できます。ご参考まで。

    SELECT
    id,
    comment
    FROM table
    ORDER BY comment IS NULL ASC, COMMENT ASC;

  2. matsuura Says:

    > MeijiK さん
    ありがとうございます。
    本文にも追記で情報を掲載させていただきました。

  3. MySQLで昇順ソートする時、NULL を最後に持ってくる « Web屋に復帰した人間のリハビリ日記 Says:

    [...] MySQL で NULL を一番最後にして昇順にソートする [...]

Leave a Reply

Additional comments powered by BackType

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン