【问题标题】:ORA-00913: too many valuesORA-00913: 值过多
【发布时间】:2017-03-10 01:55:25
【问题描述】:

我正在尝试进行更新,但似乎一直遇到这个特定的错误代码。当我运行在外部 WHERE 子句中找到的嵌套 SELECT 语句时,我能够提取需要更新的正确条目,但是一旦我尝试运行应该提交更改的完整语句,就会遇到错误。

UPDATE expertise
SET expertise_level = (expertise_level + 1)
WHERE expertise_level = (SELECT UNIQUE expertise_level, cs.instructor_id
    FROM class_section cs JOIN course c ON (cs.course_code = c.course_code)
    JOIN expertise e ON (c.course_code = e.course_code)
    WHERE (expertise_level < 10) AND (year = '2016'));

我的语法中是否缺少某些内容,或者可能是构造查询的更好方法?谢谢!

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    看看你的陈述...

    ...
    WHERE expertise_level = (SELECT UNIQUE expertise_level, cs.instructor_id
        FROM class_section 
    ...
    

    怎么可能 “expertise_level”是否等于“expertise_level,instructor_id”?

    【讨论】:

      【解决方案2】:

      您的子查询有两列,但仅与一列进行比较。一种做你想做的事的方法是使用相关子查询:

      UPDATE expertise
          SET expertise_level = expertise_level + 1
          WHERE expertise_level = (SELECT expertise_level
                                   FROM class_section cs JOIN
                                        course c
                                        ON cs.course_code = c.course_code 
                                   WHERE c.course_code = e.course_code AND
                                         expertise_level < 10 AND 
                                         year = '2016'
                                  );
      

      如果可以有多个匹配项,您可能需要使用IN

      另一个选项使用带有元组的=IN

      UPDATE expertise
          SET expertise_level = expertise_level + 1
          WHERE (course_code, expertise_level) =
                    (SELECT c.course_code, expertise_level
                     FROM class_section cs JOIN
                          course c
                          ON cs.course_code = c.course_code 
                     WHERE expertise_level < 10 AND 
                           year = '2016'
                    );
      

      尚不清楚讲师是否应包含在您的逻辑中;这似乎是语法错误的原因。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-29
        • 1970-01-01
        • 2015-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多