- ベストアンサー
Mysqlでテーブルのレコードを足し合わせる方法
- Mysqlを使用して、2つのテーブルのレコードを足し合わせる方法について教えてください。
- table1とtable2の各々のレコードを加算して、新しいテーブルを作成する方法を教えてください。
- 処理後に得られるテーブルは、元のテーブルの各カラムごとに対応するレコードを足し合わせた結果となります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
データベースはExcelの表などと違って「二つの同じ形式の表の同じ位置にある値同士を足す」ようなことはできません。 ですから、table1の各レコードとtable2の各レコードを紐付けるための列が必要になります。 例えば以下のように「no」という列を追加します。 table1 -------------------- col1|col2|col3|no 20 |30 |40 | 1 40 |40 |50 | 2 10 |20 |20 | 3 -------------------- table2 -------------------- col1|col2|col3|no 10 |10 |20 | 1 20 |20 |20 | 2 10 |20 |20 | 3 -------------------- として SELECT table1.col1 + table2.col1, table1.col2 + table2.col2, table1.col3 + table2.col3 FROM table1 INNER JOIN table2 ON table1.no = table2.no ORDER BY table1.no; とすれば一応は可能かと思いますが、これはtable1とtable2のレコード数が同じで、かつnoが必ず一対一で対応している場合でないと期待通りの結果を返してくれません。 実際には ・table1とtable2でレコード件数が違う ・noがtable1とtable2で一対一で対応していない などの場合はさらに工夫が要りますが、どういう結果を返したいかによってやり方は変わってくるので、とりあえずはここまでで。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
結論からいえば、今のままではできません。 見た感じ1行目、2行目、3行目をそれぞれ足した結果を得たいように見えますが SQLにおいてレコードの表示順は確実性がありません。 もしやるならそれぞれのレコードを確定するためのidを振り、 そのid同士をつかって連結するのが妥当です。
お礼
ありがとうございます。大変参考になりました。
お礼
数字と綱目を揃えて、inner joinで計算されました。 ありがとうございます。