select top 20 * from table order by newid()

解决方案 »

  1.   

    如何取n到m条记录的语句(1).
    select top m * from tablename where id not in (select top n id from tablename)结果:从第n条记录开始,顺序取m条记录(2).
    select top m * into #a from tablename order by id -- 将top m笔插入
    set rowcount n -- 设置固定显示的记录数
    select * from #a order by id desc -- 先倒序,再取3条记录结果:从第m-n+1条记录开始,顺序取n条记录
    ************************************************************
    SET ROWCOUNT
    使 Microsoft SQL Server 在返回指定的行数之后停止处理查询。
    ************************************************************(3).
    select top n * from 
    (select top m * from tablename order by id) a
    order by id desc结果:从第m-n+1条记录开始,顺序取n条记录(4).
    如果表里没有identity列,那么:
    select identity(int) id0,* into #temp from tablename取n到m条的语句为:
    select * from #temp where id0 >=n and id0 <= m结果:从第n条记录开始,顺序取m条记录************************************************************
    如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
    exec sp_dboption 你的DB名字,'select into/bulkcopy',true
    ************************************************************(5).
    如果表里有identity列,那么简单:
    select * from tablename where id between n and m 结果:从第n条记录开始,顺序取m条记录(6).
    用虚拟表,select top n * ,identity(int,1,1) TID into #a from tableName
    select * from #a where Tid=n结果:取第n条记录
      

  2.   

    select top n(或20) * from tb order by newid() , col1
      

  3.   

    没有一个是我想要的结果
    -------------------------
    楼主看清楚,这个就可以呀select top m * from tablename where id not in (select top n id from tablename)
    结果:从第n条记录开始,顺序取m条记录按照你的要求,改成这样:
    select top 20 * from tablename where id not in (select top n id from tablename)你只要改n的值就可以做到“随机”\“相临”