2011-01-23 10 views
1

これはなぜ動作していないのですか?私は2つの異なる列の合計を取得し、一緒に追加したいと思います。テストデータは、1つの列で10、他の列で10です。合計20です。これは私が期待しているものです。Mysqlの追加、結果は期待通りではありません

答えて

5

おそらく、どちらかの列にいくつかのNULL値があります。集計関数SUMはNULL値を無視しますが、加算演算子はNULLではありません。(1 + NULL)の値はNULLです(予想通り1ではありません)。その結果、合計額は予想よりも低くなります。

が正しい合計を取得するには、個別に各列の上に合計し、その結果を追加することができますいずれかの列が完全にNULLことができれば、これはまだ動作しません

SUM(col1) + SUM(col2) AS total 

。そして、あなたはこれを試すことができます。

SELECT SUM(col1), SUM(col2)  FROM yourtable; -- Returns 10, 10 
SELECT SUM(col1 + col2)   FROM yourtable; -- Returns 15 
SELECT SUM(col1) + SUM(col2)  FROM yourtable; -- Returns 20 
SELECT SUM(col1 + IFNULL(col2, 0)) FROM yourtable; -- Returns 20 

テストデータ:

CREATE TABLE yourtable (col1 INT NOT NULL, col2 INT NULL); 
INSERT INTO yourtable (col1, col2) VALUES (5, NULL), (5, 10); 

 
col1 | col2 
-----+---- 
5 | NULL 
5 | 10 

が、その後、これらの異なるクエリを試してみてください。

例えば
SUM(IFNULL(col1, 0)) + IFNULL(col2, 0)) AS total 

、あなたがこのテーブルを持っている想像します

+0

ありがとうございました。それはそれだった。 :) – jim

+0

また、今まであなたの編集が表示されませんでした。ありがとう、それは本当に私のための視点にそれを置きます。 – jim

+0

@jim:どうぞよろしくお願いいたします。 –

関連する問題