除了在 SELECT 的 WHERE 子句中的子查询,还可以在其它数据操纵语言(DML)语句
中使用子查询,包括 DELETE 和 UPDATE 的 WHERE 子句。
适用某些限制。如果子查询的 FROM 子句返回多行,并且该子句指定与其它 DML 语句
正在修改相同的表或视图,那么处于下列情况下的 DML 语句会成功。
•
DML 语句不能是 INSERT 语句。
•
子查询中的 SPL 例程没有引用正在被修改的表。
•
子查询不包括相关列名。
•
该子查询使用 DELETE 和 UPDATE 的 WHERE 子句中的子查询语法的条件指
定。
如果这些条件中的任何条件都不符合,那么 DML 操作发生错误 -360。
以下示例修改 stock 表,通过增加价格子集的 10 % 来增加 unit_price 值。WHERE 子句通
过将 IN 运算符应用到从 stock 表查找到 unit_price 值少于 75 而返回的行来增加价格。
UPDATE stock SET unit_price = unit_price * 1.1
WHERE unit_price IN
(SELECT unit_price FROM stock WHERE unit_price < 75);