如题:我想从一个表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;
方法一每次都筛选出同一条记录
方法二每次都筛选出不同的记录请问为什么第一种方法就不行呢?按道理两种方法都是先随机排序,再筛选。为什么第一种方法就不行呢?

解决方案 »

  1.   

    可以用这个句子:
    select top 1 * from tableA order by newid()
      

  2.   

    方法一是从记录中选出一条记录,然后对这一条记录随机排序
    方法二是把所有记录随机选出,然后选出第一条select ... where ... order by 先选出符合条件的记录,然后对记录排序,难道不是这样的吗?