关于ORACLE里随机抽取数据的问题,因为随机是动态的,要想固定到某一行比较困难,
虽然ORACE的ROWID是唯一的,但要根据ROWID去定位到某一行也比较困难,为此,可以
根据ORACLE的一个关键字minus来定位。
minus的意思是找到两个给定的数值集合之间的差异,意味着找到一个数值集合,
其中的元素仅存在于前一个集合中,而不存在于另一个集合中
具体算法:首先得到你要得到的随机数的集合的总记录数COUNT,然后随机产生一个0到COUNT的随机数NUM,
然后根据ORACLE的ROWNUM得到一个查询语句(select * from tablename where rownum<=NUM),
这样就得到了前NUM条记录,再写个查询语句得到前NUM-1条记录
再利用ORACLE的MINUS来得到两个查询语句之间不同的记录,这样就是一个随机产生的记录.
完整的SQL语句:
int COUNT=select count(*) from tablename; //得到集合的总记录数
Random rd=new Random();
int NUM=rd.Next(0,COUNT); //产生一个随机数
//得到一条随机记录
select * from tablename where rownum<=NUM minus select * from tablename where rownum<=NUM-1