为什么这个Oracle查询不起作用?

the*_*cuz 2 sql oracle

我有这个简单的Oracle语句来删除行...但我无法让它工作

delete from NPEA.tnpe00_all
where EXISTS
  (select 1
  from NPEA.tnpe05_doc, NPEA.tnpe00_all
  where NPEA.tnpe05_doc.n_doc =  NPEA.tnpe00_all.t_doc
    and NPEA.tnpe05_doc.n_prt is null
    and NPEA.tnpe05_doc.n_can = 4
  order by n_doc)
Run Code Online (Sandbox Code Playgroud)

错误代码是

00907. 00000 -  "missing right parenthesis"
Run Code Online (Sandbox Code Playgroud)

这有什么问题?

Vin*_*rat 10

您不能在EXISTS子句中使用ORDER BY:

SQL> SELECT 1 FROM dual WHERE EXISTS (SELECT 1 FROM dual ORDER BY 1);

ERROR at line 1:
ORA-00907: missing right parenthesis

SQL> SELECT 1 FROM dual WHERE EXISTS (SELECT 1 FROM dual);

         1
----------
         1
Run Code Online (Sandbox Code Playgroud)

集合中的order by子句没有任何意义,因此错误(无可否认是一个无用的消息).