使用相关子查询更新表值

时间:2017-03-12 19:10:22

标签: sql oracle

Database I am working from

我正在尝试通过增加与专业和教师表中每个employee_id相关联的expertise_level来更新专业知识表中的expertise_level,该表等于class_section表中的instructor_id,并且年份值等于2014,添加1到每个专业知识都有价值。除非expert_level不小于8,否则没有任何反应。

update expertise
    set expertise_level = (expertise_level +1)
    where (employee_id, expertise_level)  = 
        (select f.employee_id, expertise_level
        from class_section s join course c on (s.course_code = c.course_code) join expertise e on (c.course_code=e.course_code) join faculty f on(e.employee_id = f.employee_id)
        where year = '2014' AND expertise_level <8
        group by f.employee_id, expertise_level);

我将使用相关的子查询来解决这个问题,这是我写的查询,我在Oracle中收到“INVALID RELATIONAL OPERATOR”错误,我不知道为什么。我是在正确的轨道上吗?

1 个答案:

答案 0 :(得分:0)

在where子句

中将运算符'='替换为'in'
...   
 where (employee_id, expertise_level) in
...

使用'='您只能匹配单个值。