有两个表工作和员工。我想用jobs.job_title取代emloyees.first_name。 我喜欢这样:
update employees
set first_name= (select distinct job_title from jobs,employees where
employees.job_id=jobs.job_id)
QL错误:ORA-01427:单行子查询返回多行。
尝试用光标做,但是有同样的错误。 你能告诉我如何根据另一个表更新多行吗?
答案 0 :(得分:2)
当您使用相关子查询时,外表几乎从不进入相关子查询。我想你真的想要:
update employees
set first_name = (select job_title
from jobs
where employees.job_id = jobs.job_id
);
为作业标题设置名字似乎很奇怪,但这似乎是您查询的目的。
我猜job_id
对于表jobs
来说是唯一的,所以这应该可以解决您的问题。如果没有,添加and rownum = 1
将确保最多返回一行。