素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

IT

投稿日: 2020年3月30日
最終更新日:

【MySQL】NULLが含まれるデータを取得する際のORDER BYで優先度を低くしたい場合の書き方【簡単瞬殺】

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2023/06/29 16:02:15時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

ペヤング ソースやきそば 120g×18個

created by Rinker
ペヤング
¥2,928 (2023/06/29 16:02:23時点 Amazon調べ-詳細)

とりあえず保存食として買っておけば間違いなし!

レッドブル エナジードリンク 250ml×24本

created by Rinker
Red Bull(レッドブル)
¥4,280 (2023/06/29 16:02:19時点 Amazon調べ-詳細)

翼を授けよう!

モンスターエナジー 355ml×24本 [エナジードリンク]

created by Rinker
モンスター
¥4,617 (2023/06/29 16:02:20時点 Amazon調べ-詳細)

脳を活性化させるにはこれ!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥14,935 (2023/06/29 16:02:26時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール

created by Rinker
BANDAI SPIRITS(バンダイ スピリッツ)
¥9,280 (2023/06/29 16:02:21時点 Amazon調べ-詳細)

もう一人の僕を呼び覚ませ!!

MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド

created by Rinker
MOFT
¥2,880 (2023/06/29 16:02:23時点 Amazon調べ-詳細)

Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!

スポンサーリンク

336×280




MySQLのNULLに対するORDER BYの取り扱いについて

MySQLにて、NULLが許容されたカラムに対してORDER BYをかける際にはちょっと注意した方が良いです。

何も気にせずにORDER BYをかけると想定と違う挙動になる場合もあるので、MySQLのNULLに対する挙動の整理とNULLに対する優先度を制御する方法をご紹介しようと思います。

NULLの取り扱いについてのおさらい

前提

今回は以下のテーブルを使って試しています。

投入データはこんな感じ。

通常のORDER BY

それでは、priorityカラムを軸にORDER BYして見ます。

ASC(昇順)の場合

まずはASCから確認して見ましょう。

結果としてはNULL最大値として判定され、そのあとに値の昇順(0,1,2...)が判定されています。

DESC(降順)の場合

次にDESCで確認して見ましょう。

結果としては値の降順(100,99,98...)が判定されNULL最小値となっています。

NULLの優先度を制御する方法

ORDER BY句の先頭にIS NULLを追加

上記で紹介したようなシンプルなORDER BYとは違う順序制御をしたい場合は、ORDER BY句の先頭にORDER BY {対象項目} IS NULL {ASC or DESC},{対象項目}とするだけで制御が可能になります。

NULLの優先度を最低、値を昇順にしたい場合

以下のSQLで実現可能です。

期待通りの並び順になりましたね♪

上記の構文を解説すると、まず値がNULLかどうかの判定を行いNULLじゃない場合をFALSE(=0)と判定し、その値でASCをかけることにより値が登録されているレコードを優先的に取得し、そのあとに値がNULLの場合のレコードを昇順で取得するようにしています。

NULLの優先度を最高、値を降順にしたい場合

以下のSQLで実現可能です。

こちらも期待通りの結果になりました。

上記の構文を解説すると、まず値がNULLかどうかの判定を行いNULLじゃない場合をFALSE(=0)と判定し、その値でDESCをかけることにより値がNULLの場合のレコードを優先的に取得し、そのあとに値が登録されているレコードを降順で取得するようにしています。

終わりに

以上のようにちょっと取り扱いが難しいMySQLのNULLに対するORDER BYテクニックでした。

今回ご紹介した4パターンを覚えておけば、NULLが混在したカラムに対するORDER BYは網羅出来ると思うので、お困りの方はぜひ試して見てください♪

336×280




336×280




CATEGORIES & TAGS

IT, , , , , , , ,

blogenist

Author: blogenist

関連記事

YouTubeも見てね♪

お名前.comサイドバー