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>
このクエリは、YourColumn
に NULL
が含まれていない行を返します。 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>
これにより、各行の val1
と val2
から最初の非 null 値が選択され、それが val
列に割り当てられます。
以上がMySQL SELECT ステートメントから NULL 値を除外するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。