您需要一个带有 JOIN 子句而不是 INSERT 语句的 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