none
【SQL】多字段排序问题 RRS feed

  • 问题

  • 这里有几条数据如下:

    id            sum

    2               5

    6               7

    4               3

    7               6

    3               9

    5               2

     

    运行select * from tb order by [id] asc,[sum] asc 排序如下:

    id       sum

    2         5

    3         9

    4         3

    5         2

    6         7

    7         6

     

     

    再次运行语句select * from tb order by [sum] asc,[id] asc

    id     sum

    5       2

    4       3

    2       5

    7       6

    6       7

    3       9

     

    从这几次测试可以看出,似乎第二个字段没有参与到排序中,从效果上来看,似乎只有第一个字段起作用。那么我想问的是,既然可以多字段组合排序,那么什么情况下多字段排序好用呢?或者说我这里为什么没有实现效果

    之所以问这个问题是由于http://social.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/c6edcb84-d1a7-476a-8730-49b29cb40236 这个问题没有弄明白,所以我做了以上测试,发现了问题,前来一探究竟,寻求高手帮忙指点,小弟表示感激不尽。谢谢!

    2010年8月20日 7:26

答案

  • 这个很明显啊。。

    因为你的列值无论是id sum列值都是唯一的...

    当然第二列排序没用啦..

    你改下数据就知道用户在哪里了 在2列中都包含重复值

     

     

    id            sum

    2               5

    6               7

    4               7

    7               6

    7              9

    5               2

    2010年8月20日 7:40

全部回复

  • 这个很明显啊。。

    因为你的列值无论是id sum列值都是唯一的...

    当然第二列排序没用啦..

    你改下数据就知道用户在哪里了 在2列中都包含重复值

     

     

    id            sum

    2               5

    6               7

    4               7

    7               6

    7              9

    5               2

    2010年8月20日 7:40
  • 这个很明显啊。。

    因为你的列值无论是id sum列值都是唯一的...

    当然第二列排序没用啦..

    你改下数据就知道用户在哪里了 在2列中都包含重复值

     

     

    id            sum

    2               5

    6               7

    4               7

    7               6

    7              9

    5               2


    明白了,原来是这样啊,多列排序情况是在同一字段出现重复数据情况下才能排序啊,那么我以前的问题也就迎刃而解了。感谢感谢 

    回到以前的问题,还是没有想明白,哎,脑子完了,谁给我讲解一下啊http://social.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/c6edcb84-d1a7-476a-8730-49b29cb40236  谢谢了

    2010年8月20日 7:55