Cad*_*oux 11 oracle oracle10g subquery-factoring ora-00928
尝试这样做(适用于SQL Server):
WITH X AS (), Y AS (), Z AS ()
DELETE FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z);
Run Code Online (Sandbox Code Playgroud)
这适用于Oracle:
WITH X AS (), Y AS (), Z AS ()
SELECT * FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z);
Run Code Online (Sandbox Code Playgroud)
但DELETE不会:ORA-00928:缺少SELECT关键字
我的子查询相当大,是否有不同的语法来使其工作?
DCo*_*kie 12
除了SELECT语句之外,您不能使用Subquery Factoring/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));
Run Code Online (Sandbox Code Playgroud)
我得到了这个工作(我肯定在SQL Server中不起作用):
DELETE FROM TBL
WHERE TBL.ID IN (
WITH X AS (), Y AS (), Z AS ()
SELECT ID FROM Z
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17064 次 |
| 最近记录: |