2011-11-03 130 views
0

我收到錯誤「ORA-00907:缺少右括號」 但我已檢查並且所有括號都在那裏,所以我很難過。ORA-00907:缺少右括號

我的查詢是

SELECT 
    SUM(score) as score, 
    facebook_id, 
    firstname, 
    lastname, 
    dense_rank(score) 
WITHIN GROUP (ORDER BY score) as rank_db 
FROM 
    (
    SELECT DISTINCT * 
    FROM 
     (
     SELECT * 
     FROM fanta_score 
     ORDER BY score desc 
    ) as f 
    GROUP BY 
     facebook_id, game_id 
) as g 
GROUP BY facebook_id 
ORDER BY score DESC, created_at 
LIMIT 50 

我絕不是一個Oracle專家,但我不得不使用它,由於託管環境的必須是英寸

+0

我在想這可能是與限制聲明有關? – ZaV

+0

您是否嘗試過註釋每個查詢的內容(正在處理內部/外部)並查看哪些語句會產生錯誤? –

+0

此外,這並不能真正解決您的問題,但您不希望在子查詢中擁有ORDER子句。這會導致查詢性能下降,因爲優化程序在排序後不再使用索引,因爲它必須使結果集變平。當他們真的不需要訂購時,人們通常會訂購子查詢。 –

回答

0

limit命令無法識別在Oracle中。並應使用ROWNUM而不是限制

SELECT 
    SUM(score) as score, 
    facebook_id, 
    firstname, 
    lastname, 
    dense_rank(score) 
WITHIN GROUP (ORDER BY score) as rank_db 
FROM 
    (
    SELECT DISTINCT * 
    FROM 
     (
     SELECT * 
     FROM fanta_score 
     ORDER BY score desc 
    ) as f 
    GROUP BY 
     facebook_id, game_id 
) as g 
WHERE ROWNUM = 50 
GROUP BY facebook_id 
ORDER BY score DESC, created_at 
+1

我猜這應該是rownum <= 50?你寫的查詢將返回零行,對吧? – eaolson

+0

謝謝,我徹底刪除了限制,我仍然得到相同的錯誤。 – ZaV

+0

也許,你可以指定這樣的,但沒有問題,如果你想把** ROWNUM = 50 ** – ppshein