如题

解决方案 »

  1.   

    楼长想实现什么呢?如果只是想随机地从库中的1000条记录中抽取200条,有一个更好的办法:
    SELECT TOP 200 * 
    FROM tablename
    ORDER BY NEWID() 如果一定要严格按每五条取一的话,可以加入一个按顺序排的字段ID:1,2,3,4......
    select 出哪些符合条件round(ID/5)=ID/5.0记录
      

  2.   

    事实是这样地:
        目前有n个表,需要用DBCHART显示各个表的记录曲线,由于记录过多,200-10000条不等,为了提高显示速度,设想超过1000条记录的表均匀抽取1000条记录,生成DBCHART图表,SO,如果某表记录为5000条,则需要每隔5条选一条,形成1000条记录,想法如何?高人指点,表中有ID字缎,自动编号的,用adodataset连接,sql语句怎么写,round(ID/5)=ID/5.0?sql里面有round吗?不清楚,请指教
      

  3.   

    直接取顶上1000条不行么?Select top 1000 from Tablename不就行了么?
      

  4.   

    如何写sql语句,老大帮忙先?......
      

  5.   

    SELECT IDENTITY(int,1,1) AS ID,* into #temp FROM yourtable
    select * from #temp WHERE id % 5 = 0
      

  6.   

    with tablename do
    (select no=5*n from tablename)
      

  7.   

    我说过了,SELECT TOP 200 * 
    FROM tablename
    ORDER BY NEWID() 就是随机抽取,按概率来说,就是均匀抽取。
    newid()函数会为每个记录产生一个随机数,如果从五千条中取一千条,就是:
    select top 1000 * from table order by newid()
      

  8.   

    我用的是ACCESS,说newid()函数没有定义    adodataset1.Active:=false;
        adodataset1.CommandText:='select top 1000 * from mytable order by newid';
        adodataset1.Active:=true;
      

  9.   

    关注,如果你不嫌调试麻烦,可以自己编程实现dbgrid1.datasource.dataset.moveby(5);
    移动到5 条后
      

  10.   

    很不好意思,我以为是Sql server,Access我没怎么研究过.
    mysql: select * from tablename order by rand() limit 1000
    sqlserver: select top 1000 * from tablename order by NEWID()
      

  11.   

    csouth(金子) ,谢你个先。