PL/SQL中的增量变量/计数器选择结果
问题描述:
一个相当愚蠢的问题。我有一个带有产品的Oracle Db,现在读出了前10个产品。PL/SQL中的增量变量/计数器选择结果
我现在想下面显示
1 Product A
2 Product XY
3 Product B
愚蠢的问题,而是如何让前面的柜台?我显然必须增加,但我不明白这是如何工作的。我也想过使用WITH和tmp表,但无法弄清楚需要如何设置。
SELECT POS ???, PRODUCTNAME FROM TBLPRODUCT
我对PL/SQL不是很熟悉。有人可以给我一个提示吗?非常感谢。
答
ROWNUM
是Bob所示的一种方法,但如果您使用的是更复杂的查询 - 尤其是在您明确排序行的情况下 - 它可能不会提供您想要的结果。
如今,解析函数通常是一个更好的方法,因为你必须在订货明确的控制:
SELECT ROW_NUMBER() OVER (ORDER BY productname), productname
FROM tableproduct
ORDER BY productname
注意,这决定了行号行的顺序是从整体结果的排序分开组。在这个例子中,我使用了与您可能想要的顺序相同的顺序,但值得注意的是,这给了您更多的灵活性。
(和为是有点迂腐道歉,但这无关PL/SQL,这是一个嵌入Oracle中的程序语言,这简直是对Oracle的SQL实现。)
答
使用ROWNUM,如
SELECT ROWNUM, PRODUCTNAME FROM TBLPRODUCT
分享和享受。
+1,有如果您传递的信息使事情变得更加清晰,并更好地理解OP,那么没有什么不好的做法。 – Ollie 2012-03-16 11:59:51
谢谢你的解决方案。这是非常有趣的,并再次向我展示了所有我不知道的东西:(但是,我刚刚意识到,我只想看到前10个,但是由于某种原因,现在我说WHERE ROWNUM Luka 2012-03-16 12:30:36
@Luka - 看看这个例子做一个在Oracle中正确的前n查询:http:/ /*.com/questions/6858325/oracle-top-n-ordered-rows。如果这不能给你足够的信息来解决你的问题,请告诉我。 – 2012-03-16 12:52:09