2011-09-27 15 views
3

我有沒有在我的DB2數據庫運行下面的SQL語句:爲什麼FETCH FIRST N ROWS不能與WITH語句結合使用?

WITH a AS (
    SELECT * FROM sysibm.systables 
) 
SELECT a.* FROM a 
FETCH FIRST 10 ROWS 

沒有FETCH聲明它的工作原理。該錯誤消息我得到的是:

非法使用關鍵字OPTIMIZE,令牌ERR_STMT 的WNG_STMT獲得SQL SAVEPOINT舉行自由 ASSOCIATE預期。

有什麼建議嗎?

+0

感謝您的答案。我忘了複製'ONLY'關鍵字。如果我添加它,查詢仍然無效!相同的錯誤消息。 – Boris

回答

6

你錯過了在FETCH子句的末尾ONLY關鍵字。

WITH a AS (
    SELECT * FROM sysibm.systables 
) 
SELECT a.* FROM a 
FETCH FIRST 10 ROWS ONLY; 
+1

是的,這就是問題所在 –

+0

我只是忘了複製'ONLY'這裏。我在原來的聲明中使用它,並且查詢不起作用。我有這種感覺,它連接到'WITH'子句。 – Boris

0

在最後缺少唯一關鍵字。示例​​。

0

儘管您給出的示例可能已經簡化,但如何將提取第一個子句放入第一個選擇部分?

我永遠無法清楚地閱讀文檔,但隨着with-statement創建一個通用表表達式,您可能無法使用fetch-first-clause從其中進行選擇。根據this documentation,在選擇with語句中使用fetch-first-clause是有效的語法。

WITH a AS (
SELECT * FROM sysibm.systables 
FETCH FIRST 10 ROWS ONLY 
) 
SELECT a.* FROM a; 
相關問題