关于随机查询的疑问
如题:我想从一个表A里面随机抽取一条记录,我用了两种方法,但得到的结果完全不同,请教各位大虾:
方法一:
select * from tableA where rownum < 2 order by dbms_random.random;
方法二:
select * from (select * from tableA order by dbms_random.random) where rownum < 2;
方法一每次都筛选出同一条记录
方法二每次都筛选出不同的记录
请问为什么第一种方法就不行呢?按道理两种方法都是先随机排序,再筛选。为什么第一种方法就不行呢?
------解决方案--------------------方法一是从记录中选出一条记录,然后对这一条记录随机排序
方法二是把所有记录随机选出,然后选出第一条
select ... where ... order by 先选出符合条件的记录,然后对记录排序,难道不是这样的吗?