ホームページ >データベース >mysql チュートリアル >MySQL SELECT ステートメントから NULL 値を除外するにはどうすればよいですか?

MySQL SELECT ステートメントから NULL 値を除外するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-15 16:37:43174ブラウズ

How Can I Exclude NULL Values from MySQL SELECT Statements?

MySQL SELECT クエリでの NULL のフィルタリング

質問: MySQL SELECT ステートメントを使用して null 以外の値のみを取得するにはどうすればよいですか?

標準 MySQL SELECT * ステートメントには、NULL 値を持つ列も含め、すべての列が含まれます。 null 以外のデータのみを取得するには、IS NOT NULL 条件を使用します。

<code class="language-sql">SELECT * 
FROM your_table
WHERE YourColumn IS NOT NULL;</code>

このクエリは、YourColumnNULL が含まれていない行を返します。 MySQL は、標準 SQL ではありませんが、null セーフな等価演算子の否定もサポートしています。

<code class="language-sql">SELECT *
FROM your_table
WHERE NOT (YourColumn <=> NULL);</code>

複数の列を処理するには、別の戦略が必要です。 1 つのメソッドでは、複数の SELECT ステートメントと UNION ALL:

を使用します。
<code class="language-sql">SELECT val1 AS val
FROM your_table
WHERE val1 IS NOT NULL
UNION ALL
SELECT val2
FROM your_table
WHERE val2 IS NOT NULL;</code>

このアプローチでは、各列を個別にチェックし、結果を結合します。 ただし、複数のテーブル スキャンが発生するため、非効率になる可能性があります。

複数のスキャンを回避するには、クロス結合を含む CASE ステートメントを検討してください。

<code class="language-sql">SELECT CASE idx
         WHEN 1 THEN val1
         WHEN 2 THEN val2
       END AS val
FROM your_table
CROSS JOIN (SELECT 1 AS idx UNION ALL SELECT 2) t
HAVING val IS NOT NULL;</code>

これにより、各行の val1val2 から最初の非 null 値が選択され、それが val 列に割り当てられます。

以上がMySQL SELECT ステートメントから NULL 値を除外するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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