select top 1 * from 表 where id<@id order by id desc
union
select top 2 * from 表 where id>=@id order by id

解决方案 »

  1.   

    declare @tb table
    (
     id int,
     name varchar(10),
     message varchar(10)
    )
    insert @tb
    select 1      ,'aaaa',       'msg' union
    select 4      ,'bbbb',       'msg' union
    select 5      ,'cccc',       'msg' union
    select 8      ,'dddd',       'msg' union
    select 10     ,'eeee',       'msg'--查询
    declare @id int
    set @id=8select * from (select top 1 * from @tb where id<@id order by id desc)t
    union 
    select top 2 * from @tb where id>=@id order by id
      

  2.   

    select top 1 * from 表 where id<@id order by id desc
    union
    select top 2 * from 表 where id>=@id order by id这段语句运行时出错哦~~!在union运算符(第一个查询)中不允许order by ...
    但如果少了排序又得不到预期的结果~~~该怎么办呢?
      

  3.   


    select top 1 * from 表 where id<@id
    union ALL  
    select top 2 * from 表 where id>=@id order by id desc
     这样不就行了.
      

  4.   

    说明..在UNION 中的最后是可以带ORDER BY 的.(只能够出现在最后啦..也可出现一次)
    数据集没有UNION 完.你怎么可以 ORDER   B Y 呀??