2015-10-16 23 views
0

這裏是我的查詢:運行到缺少右括號錯誤在SQL

SELECT s.sname, 
     s.deptid 
FROM student s 
WHERE NOT EXISTS ((SELECT * 
        FROM class c) 
        EXCEPT 
        (SELECT c1.room 
        FROM class c1, 
          enrolled e 
        WHERE s.snum = e.snum 
          AND e.cname LIKE c1.cname)) 
GROUP BY s.sname, 
      s.deptid; 

我的錯誤是

EXCEPT 
* 
ERROR at line 5: 
ORA-00907: missing right parenthesis 

不知道爲什麼,我似乎有左,右括號適量。我試過把所有東西都移到不存在的地方,但得到相同的錯誤。

+1

oracle中沒有'except'。使用「minus」代替 –

回答

3

既然你已經標記了這個sqlplus我假設你使用的是Oracle。 Oracle中不存在EXCEPT關鍵字;相當於MINUS。我認爲在這種情況下,解析器將EXCEPT視爲其之前的子查詢的別名,然後期望關閉括號表達式。

嘗試使用MINUS代替EXCEPT並查看得到的結果。可能還有其他語法錯誤,嵌套有點難以遵循。

+1

對於開始,這兩個查詢應該匹配的字段數。捕獲+1。 –

+1

是的,最有可能應該用'SELECT c.room'替換'SELECT *' –

+1

通常在反連接中,內部選擇中列出的字段是不相關的......這就是爲什麼當我看代碼 – Hambone