在sql中distinct与group by结果的排列顺序是一样的,它们的排列原理如何?????
另外我现在想要先排序后分组如何实现啊?????
如下面例子:
原数据
id          地名(address)    
1            北京
2            北京
3            上海
4            上海
5            云南
想要的结果:
地名(address)    
北京
上海
云南
可是我用的是:
select A.address from 
(select top 3000 address from PE_Add order by id asc) as A 
group by A.address

select distinct A.address from 
(select top 3000 address from PE_Add order by id asc) as A

select distinct address from PE_Add

select address from PE_Add group by address
结果都为:
地名(address)
云南 
上海   
北京不要以为它是按ID从大到小的排列,其实,它不是这只是数据小了点而已,数据多点时它就成了“乱序”!可是我将如何得到我想要的数据呢???
也希望高手指导一下distinct与group by对结果是如何排序的??????

解决方案 »

  1.   

    select address from T
    group by address
    order by min(id)
      

  2.   

    select address from T 
    group by address 
    order by id asc
      

  3.   

    select address from T 
    group by address 
    order by id
      

  4.   

    select distinct A.address from 
    (select top 3000 address from PE_Add order by id asc) as A 
    与 
    select distinct address from PE_Add 有什么区别没看出来。
      

  5.   

    distinct是对检索的结果(所有的字段)进行去重,group by是对指定的字段进行分组,
             如果检索的结果只有一个字段,
             并且就是该指定的字段,
             那当然就跟distinct的结果一样了
      

  6.   

    select address from T 
    group by address 
    order by id