4

我有两张看起来像这样的桌子

TABLE1id value number

TABLE2id name value rid

我想将valueTABLE2 中的数据复制到 TABLE1 中,其中 TABLE2.rid=TABLE1.id。我尝试了以下方法:

INSERT INTO TABLE1 (value) SELECT value FROM TABLE2 WHERE TABLE2.rid=TABLE1.id.

但是我不能这样做,因为我没有加入 TABLE1 和 TABLE2 ——如果我尝试这样做,我会收到语法错误。任何帮助,将不胜感激。

4

2 回答 2

5

您需要一个带有 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
于 2012-05-03T20:14:44.107 回答
2
UPDATE table2 t2 
INNER JOIN table1 t1
    ON t2.rid=t1.id
SET t2.value = t1.value;
于 2012-05-03T20:00:03.350 回答