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:
一致 *。
但我不确定如果问题确实是一个缺失的右括号。任何帮助请问?
答
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));
在这种情况下,有一个额外的左括号导致具体的错误。
参与表是否包含表示完成位置的字段?现在的查询看起来没有找到第一个未能完成的马匹。 –