尝试执行此操作(适用于 SQL Server):
WITH X AS (), Y AS (), Z AS ()
DELETE FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z);
这在 Oracle 中有效:
WITH X AS (), Y AS (), Z AS ()
SELECT * FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z);
但 DELETE 却没有:ORA-00928: 缺少 SELECT 关键字
我的子查询相当大,是否有不同的语法可以使其工作?
除了 SELECT 语句之外,您不能将子查询分解/CTE 与任何其他语句一起使用。从文档中:
您可以在任意位置指定此子句
顶级 SELECT 语句,并且在大多数情况下
子查询的类型。
你可以这样做:
DELETE FROM tbl WHERE tbl.id IN
(WITH X AS (), Y AS (), Z AS ()
SELECT id FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)