SELECT * FROM tb 
    WHERE ID>(SELECT MAX(ID) FROM 
                            (SELECT TOP 10 ID FROM tb ORDER BY ID DESC) x
             )假设ID是标识列

解决方案 »

  1.   

    好象ORACLE下才支持rownum吧,检索出来记录的序号
      

  2.   

    CREATE TABLE Test
    {col1 INT
     col2 CHAR(10)
     col3 CHAR(10)}假设PRIMARY KEY 是col1
    你要查询的数据的顺序是依照col1排序的你可以通过以下语句得到前10行数据
    SELECT TOP 10 col1 FROM Test ORDER BY col1下面你要找的数据就是不包含在这10条记录中的其他数据
    SELECT * FROM Test WHERE col1 NOT IN (SELECT TOP 10 col1 FROM Test ORDER BY col1)
      

  3.   

    我也只有和楼上一样的想法,不过效率??汗!!!如果是100个,1000个,更多呢?
    都not in ?有没有其他的办法?
    10个的话,这个应该没有什么问题!!!
    分页的存储过程用的是游标实现的吧?似乎效率也是不错的,至少大家都在用。
    参考一下那个吧!!!
      

  4.   

    呵呵,那改下
    SELECT * FROM Test WHERE col1 > (SELECT TOP 1 col1 FROM (SELECT TOP 10 col1 FROM Test ORDER BY col1) AS A ORDER BY col1 DESC)这样应该能好些吧,只检测了语法,没有验证结果
      

  5.   

    楼主不会是想用SQL来做分页操作吧???
      

  6.   

    我的意思是在第一页显示前十条,然后给个more,在另一页显示除前十条记录的所有记录?
      

  7.   

    SQL SERVER 2005中有以下写法:
    select id, (ROW_NUMBER() OVER(ORDER BY ID )) as rownum from test
    having rownum >10
      

  8.   

    set rowcount 10
    select * into #tmp from dict_kbb
    set rowcount 0
    select * from dict_kbb  where 编码 not in(select 编码 from #tmp)
    drop table #tmp
      

  9.   

    2楼说的  就是假设如果你要取的记录顺序 是按照记录标识列排序的话...........

    id   name
    1    rwe
    2    231809
    3    73129807
    5    372189
    7    2371893217
    .....
    就取第10个记录的标识号码,,,假如是20,,
    再取所有大于20的就好了...
    同样道理...如果是日期排序.....
    就取大于这个的日期.....不过也可以用 集合减的办法.....这个也很快..如bluedl的..
    先取前十....然后再所有不在这10条记录的表记录...
    select * from table where  标志 not in (select top 10 标志 from table)
    个人觉得这个要好点.....
      

  10.   

    个人赞同fcuandy(www.iDotNet.org) 的处理方法,没有必要用到ROW_NUMBER()之类的
      

  11.   

    select * from table where id not in (select top 10 id from table )