【问题标题】:all operator cause ORA-00936: missing expression所有运算符导致 ORA-00936: 缺少表达式
【发布时间】:2012-07-23 15:54:28
【问题描述】:

我在执行 follow 语句时收到一条错误消息:

UPDATE dept d 
SET city = ALL (SELECT city FROM locations l 
                WHERE d.location_id = l.location_id);

当我摆脱 ALL 运算符时,成功。

UPDATE dept d 
SET city = (SELECT city FROM locations l 
            WHERE d.location_id = l.location_id);

谁能告诉我“ALL”运算符是什么?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    ALL 保留字用于 select 语句中的查询,但不适用于 UPDATE 语句。

    引用Subqueries with ALL Oracle Doc:

    ALL 必须跟在比较运算符后面,意思是“返回 如果比较对于列中的所有值都为 TRUE,则为 TRUE 子查询返回。”

    这意味着= 符号应该用作比较,而不是分配。

    如果您希望子查询返回多于一行,您可以使用 max 或 rownun 限制结果:

    UPDATE dept d 
    SET city = (SELECT max( city ) FROM locations l 
                WHERE d.location_id = l.location_id);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 2017-08-31
      相关资源
      最近更新 更多