MySQL SUM 関数が NULL を返さないようにするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-31 07:22:30
オリジナル
148 人が閲覧しました

How to Prevent MySQL SUM Function from Returning NULL?

MySQL SUM 関数で NULL 値を処理する方法

MySQL では、値が見つからない場合、SUM 関数は多くの場合 NULL を返します。不便になる。この記事では、COALESCE 関数を使用して、値が見つからない場合に SUM が常に「0」を返すようにする方法について説明します。

問題:

次のようなクエリを考えてみましょう。

<code class="sql">SELECT SUM(Column_1)
FROM Table
WHERE Column_2 = 'Test'</code>
ログイン後にコピー

条件を満たすエントリが Column_2 にない場合、関数は NULL を返します。ただし、代わりに '0' を返す方がよい場合もあります。

解決策: COALESCE の使用

この問題に対処するには、COALESCE 関数を使用します。 COALESCE は複数の値を引数として受け取り、最初の非 NULL 値を返します。これを SUM 関数と一緒に使用すると、NULL が発生した場合に結果が常に '0' になるようにできます。

<code class="sql">SELECT COALESCE(SUM(column),0)
FROM   table
WHERE  ...</code>
ログイン後にコピー

例:

COALESCE 関数をデモンストレーションするための SQL フィドル: http://www.sqlfiddle.com/#!2/d1542/3/0

追加情報:

COALESCEこの関数を他の関数と一緒に使用して、NULL 値を処理することもできます。以下は、異なる値を持つ 3 つのテーブルを使用する例です。

MySQL 5.5.32 スキーマ セットアップ:

<code class="sql">CREATE TABLE foo (
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO foo (val) VALUES
(null), (1), (null), (2), (null), (3), (null), (4), (null), (5), (null), (6), (null);

CREATE TABLE bar (
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO bar (val) VALUES
(1), (2), (3), (4), (5), (6);

CREATE TABLE baz (
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO baz (val) VALUES
(null), (null), (null), (null), (null), (null);</code>
ログイン後にコピー

Query:

<code class="sql">SELECT  'foo'                   as table_name,
        'mixed null/non-null'   as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    foo
UNION ALL

SELECT  'bar'                   as table_name,
        'all non-null'          as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    bar
UNION ALL

SELECT  'baz'                   as table_name,
        'all null'              as description,
        0                       as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    baz</code>
ログイン後にコピー

結果:

TABLE_NAME DESCRIPTION EXPECTED_SUM ACTUAL_SUM
foo mixed null/non-null 21 21
bar all non-null 21 21
baz all null 0 0

以上がMySQL SUM 関数が NULL を返さないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!