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