2012-03-16 92 views
1

一個相當愚蠢的問題。我有一個帶有產品的Oracle Db,現在讀出了前10個產品。PL/SQL中的增量變量/計數器選擇結果

我現在想下面顯示

1 Product A 
2 Product XY 
3 Product B 

愚蠢的問題,而是如何讓前面的櫃檯?我顯然必須增加,但我不明白這是如何工作的。我也想過使用WITH和tmp表,但無法弄清楚需要如何設置。

SELECT POS ???, PRODUCTNAME FROM TBLPRODUCT 

我對PL/SQL不是很熟悉。有人可以給我一個提示嗎?非常感謝。

回答

7

ROWNUM是Bob所示的一種方法,但如果您使用的是更復雜的查詢 - 尤其是在您明確排序行的情況下 - 它可能不會提供您想要的結果。

如今,解析函數通常是一個更好的方法,因爲你必須在訂貨明確的控制:

SELECT ROW_NUMBER() OVER (ORDER BY productname), productname 
    FROM tableproduct 
    ORDER BY productname 

注意,這決定了行號行的順序是從整體結果的排序分開組。在這個例子中,我使用了與您可能想要的順序相同的順序,但值得注意的是,這給了您更多的靈活性。

(和爲是有點迂腐道歉,但這無關PL/SQL,這是一個嵌入Oracle中的程序語言,這簡直是對Oracle的SQL實現。)

+2

+1,有如果您傳遞的信息使事情變得更加清晰,並更好地理解OP,那麼沒有什麼不好的做法。 – Ollie 2012-03-16 11:59:51

+0

謝謝你的解決方案。這是非常有趣的,並再次向我展示了所有我不知道的東西:(但是,我剛剛意識到,我只想看到前10個,但是由於某種原因,現在我說WHERE ROWNUM <= 10比這個不行正確,它顯示我錯誤的數據。任何想法?哦,對不起,我使用了錯誤的標記... – Luka 2012-03-16 12:30:36

+0

@Luka - 看看這個例子做一個在Oracle中正確的前n查詢:http:/ /stackoverflow.com/questions/6858325/oracle-top-n-ordered-rows。如果這不能給你足夠的信息來解決你的問題,請告訴我。 – 2012-03-16 12:52:09

5

使用ROWNUM,如

SELECT ROWNUM, PRODUCTNAME FROM TBLPRODUCT 

分享和享受。