oracle中的相关更新

时间:2016-06-25 15:50:57

标签: sql oracle

有两个表工作和员工。我想用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:单行子查询返回多行。

尝试用光标做,但是有同样的错误。 你能告诉我如何根据另一个表更新多行吗?

1 个答案:

答案 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将确保最多返回一行。