oracle sql错误 - 右括号缺失

问题描述:

我读了几乎所有类似的问题,我没有拿出答案。oracle sql错误 - 右括号缺失

我已经写了一个查询马数据库。 有我想要的清单与马从未完成第一任其参股的,他们都参加in.My查询所有的会议是:

SELECT H1.Horse_ID,H1.H_compressed_name 

FROM Horse H1 

WHERE NOT EXISTS 

     ((SELECT P1.Part_ID 

     FROM participation P1) 

     EXCEPT( --line * 

      SELECT P2.Part_ID 

      FROM participation P2,Horse H2 

      WHERE P2.H_ID=H2.Horse_ID AND P1.Part_ID=P2.Part_ID 
       AND H1.Horse_ID=H2.Horse_ID)); 

我得到这个错误:

SQL Error: ORA-00907: missing right parenthesis 
00907. 00000 - "missing right parenthesis" 
*Cause:  
*Action: 

一致 *。

但我不确定如果问题确实是一个缺失的右括号。任何帮助请问?

+0

参与表是否包含表示完成位置的字段?现在的查询看起来没有找到第一个未能完成的马匹。 –

Oracle的EXCEPT等价物是MINUS - 同样,除了设置为例外集外,不需要任何链接,我认为在问题的查询中可能有一些括号是多余的;我建议如下:

SELECT H1.Horse_ID,H1.H_compressed_name 
FROM Horse H1 
WHERE NOT EXISTS 
     (SELECT P1.Part_ID 
     FROM participation P1 
     MINUS 
     SELECT P2.Part_ID 
     FROM participation P2,Horse H2 
     WHERE P2.H_ID=H2.Horse_ID AND 
      H1.Horse_ID=H2.Horse_ID); 

- 修复查询,虽然我不认为它会返回你正在寻找的结果。

同意另一张海报,EXCEPT是问题。我想知道他是否试图得到:

SELECT H1.Horse_ID,H1.H_compressed_name 
FROM Horse H1 
WHERE NOT EXISTS 
     (SELECT P1.Part_ID 
     FROM participation P1 
     WHERE NOT EXISTS ( --line * 
      SELECT P2.Part_ID 
      FROM participation P2,Horse H2 
      WHERE P2.H_ID=H2.Horse_ID AND P1.Part_ID=P2.Part_ID 
       AND H1.Horse_ID=H2.Horse_ID)); 

在这种情况下,有一个额外的左括号导致具体的错误。