相关疑难解决方法(0)

使用rownum选择表的第二行

我试过以下查询:

select empno from (
                   select empno 
                     from emp
                    order by sal desc
                  )
where rownum = 2
Run Code Online (Sandbox Code Playgroud)

这不会返回任何记录.

当我尝试这个查询

 select rownum,empno from (
                        select empno from emp order by sal desc) 
Run Code Online (Sandbox Code Playgroud)

它给了我这个输出:

ROWNUM  EMPNO      
1       7802        
2       7809    
3       7813    
4       7823
Run Code Online (Sandbox Code Playgroud)

谁能告诉我第一次查询的问题是什么?为什么在添加ROWNUM过滤器时没有返回任何记录?

sql oracle oracle10g rownum

21
推荐指数
2
解决办法
7万
查看次数

ROWNUM如何在分页查询中工作?

所以我想在Oracle DB中选择一系列行.我需要这样做,因为我在表中有数百万行,我想将结果分页给用户(如果你知道在客户端执行此操作的另一种方法,我使用JavaFX,如果它很重要,但我不认为通过网络发送所有数据以在客户端对它们进行分页是个好主意.

所以看完这篇文章后:SQL ROWNUM如何在特定范围之间返回行,我有以下查询:

Select * From (Select t.*, rownum r from PERSON t) Where r > 100 and r < 110;
Run Code Online (Sandbox Code Playgroud)

100110只是例子.在应用程序中,我只要求下限并添加10_000的大小以获取下一个10_000行.

现在rownum列出现在结果中,我不想看到它.由于我对SQL不是很熟悉,所以我的问题是:

  1. 为什么(这是我在SO上搜索的第一次尝试)Select * From Person Where rownum > 100 and rownum < 110;返回0行?
  2. 为什么没有简单的方法做某事Select ... FROM ... WHERE rownum BETWEEN lowerBound AND upperBound

  3. 如何摆脱r结果值中的列?从那里SQL使用SELECT*[除了columnA] FROM tableA排除一列?我显然需要创建一个视图或临时表,但考虑我的查询还有另一种方法吗?

  4. 它确保正确的分页吗?我读了这篇文章 "用ROWNUM分页",它说我应该通过一些独特的东西来命令这些值以获得一致的分页(所以rownum如果你能确认,我猜测排序很好).它不会破坏使用目的FIRST_ROWS(N)吗?

我希望它不是太多,我可以分成不同的问题,但我认为让它们紧密相关是有意义的.

谢谢 :)

sql oracle pagination rownum

8
推荐指数
3
解决办法
1万
查看次数

标签 统计

oracle ×2

rownum ×2

sql ×2

oracle10g ×1

pagination ×1