同じ構成の2つのテーブルの更新について
はじめまして、下のような2つの同じ構成のテーブルがあった場合に
create table test1
(
key1 varchar(8) not null,
key2 varchar(4) not null,
key3 varchar(6) not null,
key4 varchar(11) not null,
suryo int(9),
kingaku int(11),
constraint test1_key primary key (key1,key2,key3,key4)
);
create table test2
(
key1 varchar(8) not null,
key2 varchar(4) not null,
key3 varchar(6) not null,
key4 varchar(11) not null,
suryo int(9),
kingaku int(11),
constraint test2_key primary key (key1,key2,key3,key4)
);
10万件のtest1テーブルに 5件のtest2テーブルの内容をキー集計した結果を
test1に反映するにはどうのようなSQL文を書けば、効率的なのでしょうか?
片方のテーブルはデータ量が多く、もう片方は数件の更新処理となります。
宜しくお願いいたします。
・処理前
(test1テーブル)
key1,key2,key3,key4,suryo,kingaku
"20070521","1111","111111","11111111111",10,1000
"20070521","2222","222222","22222222222",5,5000
"20070521","3333","333333","33333333333",1, 100
(test2テーブル)
key1,key2,key3,key4,suryo,kingaku
"20070521","2222","222222","22222222222",10,30000
↓
・処理後
(test1テーブル)
key1,key2,key3,key4,suryo,kingaku
"20070521","1111","111111","11111111111",10,1000
"20070521","2222","222222","22222222222",15,35000
"20070521","3333","333333","33333333333",1, 100
補足
takaさん、ご返事ありがとうございます。 自己解決しました。 自分もtakaさんが教えてくれたページを見て、解決できました。 参照元のCompanyIDと参照先のCompanyIDで型の互換が取れていないのが問題でした。 一方では、参照キーにunsignedを設定してたんです。 マイナスの値はつかないし、いいかなーーって思ってたんです。 でも、もう一方にはつけてませんでした。 参照元と参照先のunsignedを省いたところ、うまくクエリを投げる事に成功しました。 ありがとうございます。 Corresponding columns in the foreign key and the referenced key must have similar internal data types inside InnoDB so that they can be compared without a type conversion. The size and sign of integer types must be the same. The length of string types need not be the same. For nonbinary (character) string columns, the character set and collation must be the same.