用最新时间排序,然后最新的前5条记录不要查询,查询第6条之后的记录用一条sql怎么实现?

解决方案 »

  1.   

    Select * From TableName Where 时间 Not In (Select TOP 5 时间 From TableName Order By 时间 Desc) Order By 时间 Desc
      

  2.   

    select * from tb where 时间 not in (select top 5 时间 from tb order by 时间 desc)select * from tb where 时间 not in (select top 5 时间 from tb order by 时间 desc) order by 时间 desc
      

  3.   

    --第一种方法
    --第11条到第20条,共选出10条记录
    select *
    from (select top 10 * from (select top 20 * from 表名 order by ID) t1 order by ID desc) t2
    order by ID
    --第二种方法
    --第11条到第20条,共选出10条记录
    select top 10 *
    from 表名
    where ID>(select max(ID) from (select top 10 ID from 表名 order by ID) t1)
    order by ID
      

  4.   

    Select * From TableName 
    Where 时间 Not In (Select TOP 5 时间 From TableName Order By 时间 Desc) 
    Order By 时间
      

  5.   

    select * 
    from 表名 
    where 时间 not in (select top 5 时间 from 表名 order by 时间 desc) 
    order by 时间 desc
      

  6.   

    with Table_test as
    (
       select 你要查询的字段,Row_number() over (order by 时间 desc) as row_num from 表名
    )
    select * from Table_test  where row_num >5
      

  7.   

    在mysql里用的,这样不行啊, Select * From TableName Where 时间 Not In (Select  时间 From TableName Order By 时间 Desc limit 5) Order By 时间 Desc
      

  8.   

    错误提示:
    This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
      

  9.   

    select * from tb where  Not In(select  FROM  tablename order by   desc limit 5
      

  10.   

    BILLSJONE(BILL_JONE) ( ) 信誉:96    Blog   加为好友  2007-5-5 17:55:16  得分: 0  
     
     
       
    在mysql里用的,这样不行啊,Select * From TableName Where 时间 Not In (Select  时间 From TableName Order By 时间 Desc limit 5) Order By 时间 Desc  
     
    ---------
    MySQL不熟悉,trySelect * From TableName Where 时间 Not In (Select 时间 From TableName Order By 时间 Desc LIMIT 5) Order By 时间 Desc
      

  11.   

    不分大小寫的,好象用了limit就不能用IN/ALL/ANY/SOME subquery這些語句了,不用limit就沒問題,但得不到前5條記錄。
      

  12.   

    copy楼上各位的代码,我把他总结一下(太闲?),看看对不对
    -----------------------------------------------------------
    --第一种方法
    Select * From TableName Where 时间 Not In (Select TOP 5 时间 From TableName Order By 时间 Desc) Order By 时间 Desc
    如果你的时间记录只是如YYYY/MM/DD格式的话,时间不唯一,查出来的可能不是从第六条开始,但一定是第六个时间点开始,也许楼主的需求就是这个,如果严格按照只要六条记录的话,把时间改成ID就可以达到唯一了,看以下
    ------------------------------------------------------
    --第二种方法
    --第11条到第20条,共选出10条记录
    select *
    from (select top 10 * from (select top 20 * from 表名 order by ID) t1 order by ID desc) t2
    order by ID
    这个方法有趣,颠倒两次就得到记录,符合返回记录数的要求.--第三种方法
    --第11条到第20条,共选出10条记录
    select top 10 *
    from 表名
    where ID>(select max(ID) from (select top 10 ID from 表名 order by ID) t1)
    order by ID--第四种方法
    --如果是oracle,可以用到rowid,是最快的方法
    select * from 表名 where rowid>(select max(rowid) from (select top 10 from 表名 order by 时间))--第五种方法
    --我一般都不愿意用select in 语句,所以想了一个关联子查询,其实性能未必比max那个好
    --从第5条开始选择10条
    select top 10 * from 
    表名,(select top 5 id from 表名 order by 时间ASC) as BB
    WHERE bb.[id]<表.[id]
    order by 表.[时间] 
    这是子查询的经典范例之一,充分利用索引的时候就想到用子查询可惜不能用not exists,要不能在索引字段上使用not exists是最快的.
    应该还有其他写法