select distinct t.A1, t.A2, t.A3 from t, p
where t.A4 = p.B1 and p.B2 <> '出口' ;select t.A1, t.A2, t.A3 from t, p
where t.A4 = p.B1 and p.B2 <> '出口' 
group by t.A1, t.A2, t.A3 ;
对查询结果去重复行,有什么区别?

解决方案 »

  1.   

    可能效率上有區別,哪個快,要具體測,測試過.在此處沒其他區別
    如果有計算匯總等聚合函數(sum,avg,max,min...)在內,則就有區別了,此時只能用group by
      

  2.   

    distinct 会启动sql引擎distinct只是取得唯一列,group by 是分组,可以进行函数计算。数据量大的话,一般用分组。
      

  3.   

    需要聚合运算采用group by。
      

  4.   

    distinct只是将重复的行从结果中出去; 
    group by是按指定的列分组,一般这时在select中会用到聚合函数。
    distinct是把不同的记录显示出来。 
    group by是在查询时先把纪录按照类别分出来再查询。
    group by 必须在查询结果中包含一个聚集函数,而distinct不用。
      

  5.   

    我需要的结果:唯一列是A1,但是原表中与之关联的A2、A3列的内容也要在查询结果中体现,比如
    A11,A21,A31
    A11,A22,A32
    A11,A21,A33
    ……
    而重复的(A11,A21,A31)行就被去掉了 
    主题中给出的两种方法都可以实现吗?
    为什么Group by也可以实现去重,它的功能不只是分组吗?
      

  6.   

    你是按 a1,a2,a3分的组,相当于去重了,你要是 group by a1 ;  或者 group by a1,a2 ; 差别就出来了。