select top 1 *
(select top 2 * 
 from
(select top 100 * --本来写成top count(*) *,发现这样会报错,不写top也会报错
from A 
order by CreateDate desc) t
  order by CreateDate asc) tp
order by CreateDate asc
先说一下我的思路
我想先查出全部的数据后倒序一下,然后去前两条数据,再升序一下,再取第一条数据,即可得到倒数第二跳数据
思路应该是正确的,为什么按照我的思路写的sql语句执行不通呢。
报的错是:关键字 'order' 附近有语法错误。

解决方案 »

  1.   

    测试了下,如下写法是可以的
    仅需要写2个select ,先倒序得到top2,然后再倒序select top 1 * from (
    select top 2 * from tmenu order by fmenuid desc)a
    order by fmenuid
      

  2.   

    select top 1 *
    后面少了from
      

  3.   

    select top 1 * from tp
    where CreateDate < ( select top 1 CreateDate from tp  order by CreateDate desc  )
    order by CreateDate desc