select top 10 * from(select top 10 * from (select top 20+10 * from a order by id desc)as b order by id asc)as c order by id d

时间:2021-03-25 23:50:10
  mysql:SELECT   *   FROM   a   ORDER   BY   id   DESC   LIMIT   20,10   
  =   
  sqlserver:select   top   10   *   from   (select   top   10   *   from   (select   top   20+10   *   from     a   order   by   id   desc)   as   b   order   by   id   asc)   as   c   order   by   id   desc


这里的desc,asc到底何解呢?不懂!去掉以后好像就不太对了!

6 个解决方案

#1


一个升序排列,另一个相反

#2


谢谢,不过我当然是  在想这又要降,又要升,又要降的,到底要做什么呀?
        用这语句后解决了一部分问题,但,还没完全解决,心想可能理解不透吧!

#3


他里面有子查询啊
select  top  10  *  from  (select  top  10  *  from  (select  top  20+10  *  from    a  order  by  id  desc)  as  b  order  by  id  asc)  as  c  order  by  id  desc 
==============================================================
select  top  20+10  *  from    a  order  by  id  desc    as b   这里  b是asc的
select  top  10  *  from  b as c  这里c是desc的
是为了求10到20条的asc
最后再desc下,就是反过来排啊
因为sqlserver不支持limit,所以你这样写,但是没必要吧。 。。sqlserver应该有他自己的函数支持 类似的操作啊

#4


从里往外看,从查询结果中再查询,慢慢分析

#5


二位言之有理,谢谢赐教!
             结构化!

#6


"LIMIT" sqlserver不支持啊。 

#1


一个升序排列,另一个相反

#2


谢谢,不过我当然是  在想这又要降,又要升,又要降的,到底要做什么呀?
        用这语句后解决了一部分问题,但,还没完全解决,心想可能理解不透吧!

#3


他里面有子查询啊
select  top  10  *  from  (select  top  10  *  from  (select  top  20+10  *  from    a  order  by  id  desc)  as  b  order  by  id  asc)  as  c  order  by  id  desc 
==============================================================
select  top  20+10  *  from    a  order  by  id  desc    as b   这里  b是asc的
select  top  10  *  from  b as c  这里c是desc的
是为了求10到20条的asc
最后再desc下,就是反过来排啊
因为sqlserver不支持limit,所以你这样写,但是没必要吧。 。。sqlserver应该有他自己的函数支持 类似的操作啊

#4


从里往外看,从查询结果中再查询,慢慢分析

#5


二位言之有理,谢谢赐教!
             结构化!

#6


"LIMIT" sqlserver不支持啊。