none
求排序问题! RRS feed

  • 问题

  • create table #tb
    (
     name varchar(50)
    )
    insert #tb
    select 'A' union all
    select 'B' union all
    select 'C' union all
    select 'D' union all
    select 'E' union all
    select 'F'

    select top 3 * from #tb
    /*
    怎么根据上面查询结果按照Name倒序
    注:查询数据结构不确定、msde数据库
    结果:
    Name
    C
    B
    A
    */


    付出不一定有回报,不付出那就一定没有回报!
    2010年7月10日 5:09

答案


  • select * from (
     select top 3 * from #tb order by id
    ) as t
    order by id desc
    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    • 已标记为答案 原HUGO.CM 2010年7月10日 5:42
    2010年7月10日 5:27
    版主

全部回复


  • select * from (
     select top 3 * from #tb order by id
    ) as t
    order by id desc
    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    • 已标记为答案 原HUGO.CM 2010年7月10日 5:42
    2010年7月10日 5:27
    版主

  • select * from (
     select top 3 * from #tb order by id
    ) as t
    order by id desc
    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com


    为什么

    Select * from (select top 3 * from #tb) a  order by id desc不行呢?


    付出不一定有回报,不付出那就一定没有回报!
    2010年7月10日 5:43
  • 你可以下面三个的执行计划,和I/O情况。

    select * from (
     select top 3 * from #tb
    ) as t
    order by id desc


    select top 3 * from #tb
    order by id desc

     

    select * from (
     select top 3 * from #tb order by id
    ) as t
    order by id desc


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    2010年7月10日 6:28
    版主
  • 不明白!


    付出不一定有回报,不付出那就一定没有回报!
    2010年7月10日 6:45
  • select * from (
     select top 3 * from #tb order by id
    ) as t
    order by id desc

     


    这个语句首先按照id进行升序排序,
    得到了
    1 a,
    2 b ,
    3  c
    然后在此基础上进行降序的排列,得到最终结果

     

     


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    2010年7月10日 6:59
    版主