我正在尝试使用另一个表中列中包含的值更新一个表中的列。 我已经尝试了以下但它给了我一个错误,说它返回多行。
update Table1 set description1 = (select description2 from Table2)
where customer_id in (select customer_id from Table2);
任何指导?
答案 0 :(得分:1)
要执行相关更新,子查询必须返回单行。几乎总是如此,您可以通过关联告诉您table2
中的哪一行映射到table1
的哪一行来执行此操作。假设两个表都有一个名为key
的列是唯一的
UPDATE table1 t1
SET description = (SELECT t2.description2
FROM table2 t2
WHERE t1.key = t2.key)
WHERE t1.customer_id IN (SELECT t2.customer_id
FROM table2)
答案 1 :(得分:0)
似乎select description2 from Table2
返回多行。
由于Oracle不知道要准确更新哪个值(description
)。
如果要将所有值更新为相同的值(WHERE CLAUSE
),请使用description
并将行过滤为1。如果查询select description2 from Table2
仅返回1行,请检查并运行。
Else Cave建议使用密钥进行相关更新。