1
これはなぜ動作していないのですか?私は2つの異なる列の合計を取得し、一緒に追加したいと思います。テストデータは、1つの列で10、他の列で10です。合計20です。これは私が期待しているものです。Mysqlの追加、結果は期待通りではありません
これはなぜ動作していないのですか?私は2つの異なる列の合計を取得し、一緒に追加したいと思います。テストデータは、1つの列で10、他の列で10です。合計20です。これは私が期待しているものです。Mysqlの追加、結果は期待通りではありません
おそらく、どちらかの列にいくつかの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
、あなたがこのテーブルを持っている想像します
ありがとうございました。それはそれだった。 :) – jim
また、今まであなたの編集が表示されませんでした。ありがとう、それは本当に私のための視点にそれを置きます。 – jim
@jim:どうぞよろしくお願いいたします。 –