dim sql,rscount
Randomize
intRandomNumber = Int(1000 * Rand) + 1 Sql="select * from (select top 30 * from Papers where zhangjie='1' order BY Rand("& (-1 * intRandomNumber) &"* id))a union all select * from (select top 15 * from Papers where zhangjie='2' order BY Rand("& (-1 * intRandomNumber) &"* id))a union all select * from (select top 20 * from Papers where zhangjie='3' order BY rand("& (-1 * intRandomNumber) &"* id))a union all select * from (select top 10 * from Papers where zhangjie='4' order BY rand("& (-1 * intRandomNumber) &"* id))a union all select * from (select top 10 * from Papers where zhangjie='5' order BY rand("& (-1 * intRandomNumber) &"* id))a union all select * from (select top 5 * from Papers where zhangjie='6' order BY rand("& (-1 * intRandomNumber) &"* id))a union all select * from (select top 5 * from Papers where zhangjie='7' order BY rand("& (-1 * intRandomNumber) &"* id))a union all select * from (select top 5 * from Papers where zhangjie='8' order BY rand("& (-1 * intRandomNumber) &"* id))a"上面的是我以前用Access做数据时用的一条查询语句   意思是从每章节zhangjie中按比例随机抽取记录。在ACCESS中运行正常,可我现在用SQL2000做数据库时就不能用RND这个函数了,请问高手们这条语句应怎么修改,谢谢

解决方案 »

  1.   

    intRandomNumber = Int(1000 * Rand) + 1 select * from (select top 30 * from Papers where zhangjie='1' order BY Rnd("& (-1 * intRandomNumber) &"* id))a union all
     select * from (select top 15 * from Papers where zhangjie='2' order BY Rnd("& (-1 * intRandomNumber) &"* id))a union all
     select * from (select top 20 * from Papers where zhangjie='3' order BY rnd("& (-1 * intRandomNumber) &"* id))a union all
     select * from (select top 10 * from Papers where zhangjie='4' order BY rnd("& (-1 * intRandomNumber) &"* id))a union all
     select * from (select top 10 * from Papers where zhangjie='5' order BY rnd("& (-1 * intRandomNumber) &"* id))a union all 
     select * from (select top 5 * from Papers where zhangjie='6' order BY rnd("& (-1 * intRandomNumber) &"* id))a union all
     select * from (select top 5 * from Papers where zhangjie='7' order BY rnd("& (-1 * intRandomNumber) &"* id))a union all
     select * from (select top 5 * from Papers where zhangjie='8' order BY rnd("& (-1 * intRandomNumber) &"* id))a上面显示方式不好查看,从发一次语句
      

  2.   

    最好用存储过程。如果一定要用一句SQL,效率上会比较慢。
      

  3.   

    SQL是RAND()函数,不过要做到完全不重复,比较难。