両方のテーブルにすでにデータがあり、一方の列の値を一方のテーブルからもう一方のテーブルにコピーする必要があるため、INSERTステートメントではなくJOIN句を含むUPDATEステートメントが必要です。
SQL Fiddleでデモを表示するには、ここをクリックしてください。
スクリプト:
CREATE TABLE table1
( id INT NOT NULL
, value INT NOT NULL
, number INT NOT NULL
);
CREATE TABLE table2
( id INT NOT NULL
, name VARCHAR(30) NOT NULL
, value INT NOT NULL
, rid INT NOT NULL
);
INSERT INTO table1 (id, value, number) VALUES
(1, 0, 111),
(2, 0, 222),
(3, 0, 333),
(4, 10, 444);
INSERT INTO table2 (id, name, value, rid) VALUES
(1, 'abc', 123, 1),
(2, 'def', 345, 2),
(3, 'efg', 456, 3),
(4, 'ghi', 567, 4);
UPDATE table1
INNER JOIN table2
ON table1.id = table2.rid
SET table1.value = table2.value;
UPDATEを実行する前のデータ:
table1:
ID VALUE NUMBER
-- ----- ------
1 0 111
2 0 222
3 0 333
4 10 444
table2:
ID NAME VALUE RID
-- ---- ----- ---
1 abc 123 1
2 def 345 2
3 efg 456 3
4 ghi 567 4
UPDATE実行後のデータ:
table1:
ID VALUE NUMBER
-- ----- ------
1 123 111
2 345 222
3 456 333
4 567 444
table2:
ID NAME VALUE RID
-- ---- ----- ---
1 abc 123 1
2 def 345 2
3 efg 456 3
4 ghi 567 4