我有这个用于删除行的简单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)

错误代码是
00907. 00000 -  "missing right parenthesis"

这怎么了

最佳答案

您不能在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

集合中的order by子句没有任何意义,因此会产生错误(承认有无用的消息)。

关于sql - 为什么此Oracle查询不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8984334/

10-08 23:16