如何在类似的表中更新同一列的列

时间:2016-11-10 10:13:25

标签: sql oracle

我需要将一个列从一个表复制到另一个表中的新列,但是我收到以下错误。

  

单行子查询返回多行

这是声明:

update order set  name2 = (select name from old order);

1 个答案:

答案 0 :(得分:2)

您必须在两个表格之间设置连接条件;你的选择返回表中的所有行;例如:

create table zzztemp1 (ID1 INTEGER, NAME1 VARCHAR2(100));
create table zzztemp2 (ID2 INTEGER, NAME2 VARCHAR2(100));


INSERT INTO zzztemp1 VALUES(1, 'JOE');
INSERT INTO zzztemp1 VALUES(2, 'ALBERT');
INSERT INTO zzztemp1 VALUES(3, 'JACK');


INSERT INTO zzztemp2 VALUES(1, NULL);
INSERT INTO zzztemp2 VALUES(2, NULL);
INSERT INTO zzztemp2 VALUES(3, NULL);


UPDATE zzztemp2 SET NAME2=(SELECT NAME1 FROM zzztemp1 WHERE
 zzztemp2.id2=zzztemp1.id1);

SELECT *
FROM zzztemp2;

rollback;


DROP TABLE zzztemp1;
DROP TABLE zzztemp2;