所有运算符导致ORA-00936:表达式丢失

时间:2012-07-23 15:54:29

标签: sql oracle

执行follow语句时收到错误消息:

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

当我摆脱所有操作员时,成功。

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

有人可以告诉我“ALL”操作符是什么吗?

1 个答案:

答案 0 :(得分:1)

ALL保留字用于select语句中的suqueries,但不在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);