ホームページ >データベース >mysql チュートリアル >MySQL でデータを並べ替えるときに NULL 値を最後に表示するにはどうすればよいですか?

MySQL でデータを並べ替えるときに NULL 値を最後に表示するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-15 05:07:17446ブラウズ

How Can I Make NULL Values Appear Last When Ordering Data in MySQL?

MySQL の順序付けでの Null 値の保持

MySQL では、null 値が 0 として扱われるため、MySQL では、null 値を含むデータの順序付けが困難になる可能性があります。デフォルト。これにより、null 値が非 null 値の前に表示されるという意図しない並べ替え動作が発生する可能性があります。この問題に対処するには、あまり知られていない構文を使用して、null 値がソート結果の最後に表示されるように強制できます。

Null ソートの逆転

MySQL は文書化されていない機能を提供しています。 Null 値の並べ替え順序を逆転できる構文。カラム名の先頭にマイナス記号 (-) を付け、ASC を DESC に切り替えることで、MySQL に null をソート順の最大の値として扱うように指示できます。

たとえば、次の ORDER BY 句を考えてみましょう。 :

ORDER BY -position DESC, id DESC

この句は、位置列を降順でソートし、NULL 値が最後に表示されます。 id 列は引き続き降順でソートされます。

次のデータを含むテーブルがあるとします。

| position | id |
|---|---|
| null | 10 |
| null | 11 |
| null | 12 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |

使用従来の ORDER BY 句 (位置 ASC、ID DESC) の場合、結果は次のように並べられます。

| position | id |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| null | 12 |
| null | 11 |
| null | 10 |

ただし、反転した null 並べ替え構文 (-position DESC、id DESC) を使用すると、null 値が最後に表示される望ましい順序を実現できます。

| position | id |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| null | 10 |
| null | 11 |
| null | 12 |

注:

この手法は文書化されていないため、すべての MySQL でサポートされているわけではありません。バージョン。互換性を確認するには、特定のバージョンの MySQL ドキュメントを参照してください。

以上がMySQL でデータを並べ替えるときに NULL 値を最後に表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。