一个相当愚蠢的问题。我有一个带产品的Oracle Db,现在读出前10个产品。
我现在想要以下显示
1 Product A
2 Product XY
3 Product B
愚蠢的问题,但如何让柜台在前面?我显然必须增加,但我不明白它是如何工作的。我还想过使用WITH和tmp表,但无法弄清楚如何设置它。
SELECT POS ???, PRODUCTNAME FROM TBLPRODUCT
我对PL / SQL不太熟悉。有人能给我一个暗示吗?非常感谢。
答案 0 :(得分:7)
ROWNUM
是Bob所示的一种方法,但是如果您使用的是更复杂的查询 - 特别是如果您明确地排序行 - 它可能无法提供您想要的结果。
如今,分析函数通常是一种更好的方法,因为您可以明确控制排序:
SELECT ROW_NUMBER() OVER (ORDER BY productname), productname
FROM tableproduct
ORDER BY productname
请注意,确定行号的行的顺序与整个结果集的顺序是分开的。在这个例子中,我使用了与您可能想要的相同的顺序,但值得注意的是,这为您提供了更大的灵活性。
(并且道歉有点迂腐,但这与PL / SQL无关,PL / SQL是Oracle中嵌入的过程语言。这只是关于Oracle的SQL实现。)
答案 1 :(得分:5)
使用ROWNUM,如
SELECT ROWNUM, PRODUCTNAME FROM TBLPRODUCT
分享并享受。