1

执行 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”运算符是什么吗?

4

1 回答 1

1

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

使用所有 Oracle Doc引用子查询:

ALL 必须跟在比较运算符之后,意思是“如果子查询返回的列中的所有值的比较结果为 TRUE,则返回 TRUE。”</p>

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

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

UPDATE dept d 
SET city = (SELECT max( city ) FROM locations l 
            WHERE d.location_id = l.location_id);
于 2012-07-23T16:00:09.623 回答