首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在Rownum =1时使用while rownum从db检索

只在Rownum =1时使用while rownum从db检索
EN

Stack Overflow用户
提问于 2018-04-17 05:33:39
回答 2查看 688关注 0票数 2

我试图根据行值从数据库中检索数据,

代码语言:javascript
复制
select * from MY_TABLE WHERE ROWNUM = 4

它只在rownum =1时给出结果,否则为空。尽管我确信我的表有更多的行!

代码语言:javascript
复制
              name      age 
--------     --------  -------  
1             Joe       10     
2             Leo       3    
3             Adam      9

例如,上面的表--我只能得到joe的信息--说虽然rownum = 1,但其他表没有给出结果

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-17 06:29:18

假设这是您的桌子:

代码语言:javascript
复制
SQL> select * from my_table;

NAME                        AGE
-------------------- ----------
Joe                          10
Leo                           3
Adam                          9
Yura                          1

ROWNUM不能与"=“符号一起使用(Nishant告诉您原因):

代码语言:javascript
复制
SQL> select * from my_table where rownum = 3;

no rows selected

SQL>

但是,您可以使用"<=":

代码语言:javascript
复制
SQL> select * from my_table where rownum <= 3;

NAME                        AGE
-------------------- ----------
Joe                          10
Leo                           3
Adam                          9

SQL>

或者,如果您想无论如何使用"=“(因为只需要第三个值),则必须使用内联视图来选择ROWNUM (并将其别名为"RN”--例如)以及ORDER BY子句,例如

代码语言:javascript
复制
SQL> select name, age
  2  from (select rownum rn, name, age
  3        from my_table
  4        order by age
  5       )
  6  where rn = 3;

NAME                        AGE
-------------------- ----------
Adam                          9

SQL>

或者,使用ROW_NUMBER解析函数:

代码语言:javascript
复制
SQL> select name, age
  2  from (select name, age, row_number() over (order by age) rn
  3        from my_table
  4       )
  5  where rn = 3;

NAME                        AGE
-------------------- ----------
Adam                          9

SQL>
票数 2
EN

Stack Overflow用户

发布于 2018-04-17 05:51:38

ROWNUM返回一个数字,指示Oracle从表中选择行的顺序。第一行有ROWNUM 1,第二行有2等等。

使用类似的查询

代码语言:javascript
复制
SELECT * FROM table
WHERE ROWNUM = 2

获取的第一行具有ROWNUM 1,并使where条件为false。下一行,第二行,现在是第一行,具有ROWNUM 1,并使where条件为false,以此类推。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49870552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档