0

テーブルごとに異なる where 条件を使用して、異なるテーブルから複数の合計を合計しようとしています。

ここに私の3つの合計があります:

SELECT SUM(1column2) FROM table1 WHERE 1column1 = '0';
SELECT SUM(1column4) FROM table1 WHERE 1column3 = '0';
SELECT SUM(2column2) FROM table2 WHERE 2column1 = '0' AND 2column3 = 'w' AND 2column4 != 'f';

結果は である必要があります(first sum) - (second sum) - (third sum)

4

2 に答える 2

3

MySQL は基本的な演算子をサポートしているため、次のような簡単なことを実行できるはずです。

SELECT (SELECT SUM(1column2) FROM table1 WHERE 1column1 = '0') - (SELECT SUM(1column4) FROM table1 WHERE 1column3 = '0') - (SELECT SUM(2column2) FROM table2 WHERE 2column1 = '0' AND 2column3 = 'w' AND 2column4 != 'f');

これは最適化できると確信していますが、必要なものが得られるはずです (関係に関するより良い情報がなければ、最適化は困難です)。

于 2012-05-10T17:20:51.820 に答える
1

これらのクエリのそれぞれを、目的の合計を実行する外部クエリへのサブクエリにすることができます。

SELECT
    (SELECT SUM(1column2) FROM table1 WHERE 1column1 = '0')
  - (SELECT SUM(1column4) FROM table1 WHERE 1column3 = '0')
  - (SELECT SUM(2column2) FROM table2 WHERE 2column1 = '0' 
      AND 2column3 = 'w' AND 2column4 != 'f');
于 2012-05-10T17:19:16.003 に答える