子查询不可引用 BYTE 或 TEXT 列,也不可包含 ORDER BY 子句。然而,在 FROM 子句中指
定表表达式的子查询可包括 ORDER BY 子句。
如果子查询的 FROM 子句指定外部语句在这些子句之一中引用的同一表或视图,则子查询及其外部
DML 语句在同一表对象上操作:
⚫ 在 DELETE 或 SELECT 语句的 FROM 子句中
⚫ 在 INSERT 语句的 INTO 子句中
⚫ 在 UPDATE 语句的“表选项”或“集合派生的表”规范中。
仅在 DELETE 或 UPDATE 语句的 WHERE 子句中,那些返回多行和与括起来的 DML 语句操
作的同一表或视图的子查询才是有效的。即使在此上下文中,这样的子查询也返回错误 -360,除非
满足所有下列条件:
⚫ 该子查询不引用它的 FROM 列表中的任何列名称,它在 projection 列表中未指定的表中
⚫ 使用带有 Subquery 语法的 Condition 指定该子查询。
⚫ 该子查询内的任何 SPL 例程不可引用正在修改的表。
下列程序片断包括在 UPDATE 和 DELETE 语句中带有子查询的条件的示例:
CREATE TABLE t1 ( a INT, a1 INT)
CREATE TABLE t2 ( b INT, b1 INT) ;
. . .
UPDATE t1 SET a = a + 10 WHERE EXISTS
(SELECT a FROM t1 WHERE a > 1);
UPDATE t1 SET a = a + 10 WHERE a IN
(SELECT a FROM t1, t2 WHERE a > b
AND a IN
(SELECT a FROM t1 WHERE a > 50 ) );
DELETE FROM t1 WHERE EXISTS
(SELECT a FROM t1);
要获取更多关于在 DELETE 语句中的子查询的信息,请参阅 DELETE 的 WHERE 子句中的子查
询。
要获取更多关于在 UPDATE 语句中的子查询的信息,请参阅 UPDATE 的 WHERE 子句中的子
查询。




