select * from (select rownum no,id,name from student where rownum<=3 ) where no >=2;
为什么别名的那个条件不能和rownum用and连接放在内层,把外层去掉啊
select rownum no,id,name from student where rownum<=3 and no >=2;
为什么别名的那个条件不能和rownum用and连接放在内层,把外层去掉啊
select rownum no,id,name from student where rownum<=3 and no >=2;
解决方案 »
- select菜单中的值存在数据表中,现在要改变菜单中的值的个数,发现取不到原来的值,会报null错误
- 求多线程在编程上应用的实例
- 如何区分没有session和session过期
- sql server 数据库类型 问题
- 还是Runtime问题请教!!!
- readBuffer时遇到的问题(在线等)
- 如何在Java中调用MS SQL 2000中的数据备份功能进行数据备份?.......
- 关于java nio2.0 长连接的问题
- 有scjp证书,大学英语四级,六级证书.希望在上海找一份JAVA程序员的工作,哪位老兄可以给介绍引荐一下.拜托了!
- 求高手指点,io流的读取键盘输入数据的问题
- 如何设置数组在控制台输出字体的大小
- ##### 老紫竹来散分了,反正留着也没用 。。 感谢大家 #######
楼主【ahujyy】截止到2008-07-27 14:02:31的历史汇总数据(不包括此帖):
发帖的总数量:9 发帖的总分数:40 每贴平均分数:4
回帖的总数量:15 得分贴总数量:4 回帖的得分率:26%
结贴的总数量:9 结贴的总分数:40
无满意结贴数:6 无满意结贴分:65
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:66.67 % 无满意结分率:162.50%
敬礼!
select rownum no,id,name from student where rownum <=3 and rownum >=2
能行吗?
一个道理啊
在where clause中,一般是这样的形式:
where condition A
and condition B
and ...
and rownum <= xoracle处理的机制是,把所有非rownum的条件过滤掉之后,形成了一个结果集,结果集中每一行有个一虚拟的序号(就是rownum的值),但这个虚拟的序号不是固定不变的,例如:
结果集为:
id
aaa
bbb
ccc
ddd
此时: aaa对应的rownum为1, bbb对应的rownum为2,如此类推.
当你的where clause中出现:
1. rownum = 1
oracle会在这个结果集的基础上每一行去检测rownum的值,显然只有aaa符合,因此只返回aaa那一行.
2. rownum <= 3
oracle同样在结果集中每一行去检测rownum的值,显然aaa bbb ccc符合,因此返回3行.
3. rownum = 2
oracle在检测第一行时发现第一行aaa的rownum不等于2,因此把此行从结果集中去掉,然后重新生成结果集如下:
id
bbb
ccc
ddd
此时,rownum就会重新生成,也就是bbb为1,ccc为2ddd为3.
这样的话,当在检测bbb这一行的时候,发现它的rownum是1,也不符合条件(rownum = 2),所以又把这行从结果集中去掉了,如此类推,因此你得到结果是一行也select不出来.
4. rownum >= x (x 不等于1)
这种条件得出的结果也是一行也没有的,可以根据第3种情况自己推算一下.
所以,你在网上搜到很多关于rownum的资料都会说: rownum一定要包括1.
用
select * from table1 where rownum>1 查不到记录就这么回事
比如记录是
aa
bb
cc
dd
ee如果你觉得rownum>1 应该能查出
bb
cc
dd
ee其实此时 bb 所对应用的 rownum才是1,所以无法确定记录