我需要将一个列从一个表复制到另一个表中的新列,但是我收到以下错误。
单行子查询返回多行
这是声明:
update order set name2 = (select name from old order);
答案 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;