我有两个看起来像这样的表
TABLE1
:
id
value
number
TABLE2
:
id
name
value
rid
我想将TABLE2中的value
复制到其中TABLE2.rid = TABLE1.id的TABLE1中。我尝试过以下方法:
INSERT INTO TABLE1 (value) SELECT value FROM TABLE2 WHERE TABLE2.rid=TABLE1.id.
我不能这样做,因为我没有加入TABLE1和TABLE2 - 如果我尝试这样做,我会收到语法错误。任何帮助将不胜感激。
答案 0 :(得分:6)
您需要一个带有JOIN子句而不是INSERT语句的UPDATE语句,因为您已经在这两个表中都有数据,并且您希望将其中一个列中的值从一个表复制到另一个表中。
Click here to view the demo in 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
答案 1 :(得分:2)
UPDATE table2 t2
INNER JOIN table1 t1
ON t2.rid=t1.id
SET t2.value = t1.value;