我试图根据行值从数据库中检索数据,
select * from MY_TABLE WHERE ROWNUM = 4它只在rownum =1时给出结果,否则为空。尽管我确信我的表有更多的行!
name age
-------- -------- -------
1 Joe 10
2 Leo 3
3 Adam 9例如,上面的表--我只能得到joe的信息--说虽然rownum = 1,但其他表没有给出结果
发布于 2018-04-17 06:29:18
假设这是您的桌子:
SQL> select * from my_table;
NAME AGE
-------------------- ----------
Joe 10
Leo 3
Adam 9
Yura 1ROWNUM不能与"=“符号一起使用(Nishant告诉您原因):
SQL> select * from my_table where rownum = 3;
no rows selected
SQL>但是,您可以使用"<=":
SQL> select * from my_table where rownum <= 3;
NAME AGE
-------------------- ----------
Joe 10
Leo 3
Adam 9
SQL>或者,如果您想无论如何使用"=“(因为只需要第三个值),则必须使用内联视图来选择ROWNUM (并将其别名为"RN”--例如)以及ORDER BY子句,例如
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解析函数:
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>发布于 2018-04-17 05:51:38
ROWNUM返回一个数字,指示Oracle从表中选择行的顺序。第一行有ROWNUM 1,第二行有2等等。
使用类似的查询
SELECT * FROM table
WHERE ROWNUM = 2获取的第一行具有ROWNUM 1,并使where条件为false。下一行,第二行,现在是第一行,具有ROWNUM 1,并使where条件为false,以此类推。
https://stackoverflow.com/questions/49870552
复制相似问题