首页新闻找找看学习计划

为什么查询条件中用rownum=ceil(dbms_random.value()*20)可以查询出结果集?

0
[已解决问题] 解决于 2017-09-30 11:17

select m.* from my_test   m where rownum=ceil(dbms_random.value()*20);

这个查询有时候可以查询出结果集,并且还有可能是多条的

但是SQL:select m.* from my_test   m where rownum=number;如果number大于1的话按道理应该查不出任何结果集才对呢?

真心求大神解惑,谢谢!

yong198707的主页 yong198707 | 菜鸟二级 | 园豆:202
提问于:2017-09-20 17:47
< >
分享
最佳答案
0

我去看了下为什么number大于1返回不出结果集,

因为执行sql(select m.* from my_test   m)的时候当他查询到第一条数据的时候,rownum = 1;如果你的rownum>1,不成立,所以数据不返回,所以当sql继续查询的时候,rownum还是等于1,因为前面没有结果。

那么回到你的问题ceil(dbms_random.value()*20)既然这个是随机返回整形,那么,一条条sql查询的时候总能碰到rownum = 1吧,那么一条记录就返回了,又继续碰巧到rownum = 2,第二条记录就返回了.......

会不会是这样呢

奖励园豆:5
铸剑师 | 初学一级 |园豆:147 | 2017-09-20 23:28

你说得有些道理,谢谢

yong198707 | 园豆:202 (菜鸟二级) | 2017-09-30 11:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册