执行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”操作符是什么吗?
答案 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);