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

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

Patricia Arquette
リリース: 2024-12-15 05:07:17
オリジナル
445 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート