0

与えられているのは、共通のIDと整数値を持つ2つのテーブルです。

table1:            table2:
| id   | val  |    | id   | val  |
+------+------+    +------+------+
| 1    |   0  |    | 1    |   1  |
| 2    |   1  |    | 1    |   1  |
| 3    |   1  |    |  2   |   2  |
| 4    |   2  |    |  2   |   2  |
| 5    |   2  |    |   3  |   2  |
                   |   3  |   2  |
                   |   3  |   2  |
                   |    4 |   6  |  <id shifted for readability>

この結果を1つのクエリでアーカイブする方法:

result-table:
| id   | val  |
+------+------+
| 1    |   2  |
| 2    |   5  |
| 3    |   7  |
| 4    |   8  |
| 5    |   2  |

編集:

私が得たいくつかの答えに続いて:

SELECT t1.id, t1.val + SUM(t2.val) AS val
FROM table1 t1
LEFT JOIN table2 t2 ON (t1.id = t2.id)
GROUP BY t1.id

私に何を与えるか:

id  val
1   2
2   5
3   7
4   8
5   NULL

しかし2 plus nothing = 2、そうではありませんNULL。別の方法はありますか?

4

2 に答える 2

2

あなたが忘れたgroup by

SELECT t1.id, t1.val - SUM(t2.val) AS val
FROM t1
JOIN table2 t2 ON (t1.id = t2.id)
GROUP BY t1.id

もちろん、サンプルクエリの値を減算しようとしている理由はわかりません。+多分あなたは代わりに意味しましたか?

于 2013-01-15T21:19:19.003 に答える
0

結合の代わりに結合を使用します。

     select id, sum(val)
     (
       SELECT t1.id, t1.val  as val 
       FROM table1 t1 
       union all # note this change to include all the value from 2 table  
       select t2.id, t2.val as val 
       from  table2 t2
      ) as unionTable
     groupby id;
于 2013-01-15T21:23:03.490 に答える