6

SUM(column_a)2 つの異なるテーブルから を取得し、それらの違いを取得したいと考えています。私はMySQLを使用しています。

Table A's sum = 1234

Table B's sum = 4001

私は私のON句に何を入れるべきかわからない:

SELECT 
  SUM(a.column1) AS table_a_sum,
  SUM(b.column1) AS table_b_sum,
  SUM(a.column1) - SUM(b.column1) AS difference
FROM table_a a
JOIN table_b b
ON ??????
4

3 に答える 3

14

条件なしの結合はクロス結合です。クロス結合は、右側のテーブルの各行に対して左側のテーブルの各行を繰り返します。

FROM table_a a
CROSS JOIN table_b b

MySQL では、 // は同一であることに注意してcross joinください。したがって、次のように書くことができます。joininner join

FROM table_a a
JOIN table_b b

句を省略する限りon、これはクロス結合として機能します。

2 つのテーブルの 2 つの列を合計したい場合、行が繰り返されるためクロス結合は機能しません。あなたは非常に膨らんだ数字を得るでしょう。合計については、@ sgeddesの回答ごとに、サブクエリを使用するより良いアプローチがあります。

于 2013-03-19T18:57:12.673 に答える
5

サブクエリを使用するオプションの 1 つを次に示します。これにはいくつかの方法があります。

SELECT 
  table_a_sum,
  table_b_sum,
  table_a_sum - table_b_sum AS difference
FROM 
    (SELECT SUM(column1) table_a_sum FROM table_a) a,
    (SELECT SUM(column1) table_b_sum FROM table_b) b
于 2013-03-19T18:57:57.960 に答える
1

最初に要約してから、計算を実行します。

select a.suma, b.sumb, a.suma - b.sumb
from (select sum(a.column1) as suma from tablea) a cross join
     (select sum(b.column1) as sumb from tableb) b

テーブル間で行うcross joinと、合計が台無しになるデカルト積が生成されます。

于 2013-03-19T18:59:07.713 に答える