group by与distinct有何区别

本文详细解释了SQL中DISTINCT与GROUP BY的功能差异。DISTINCT用于去除重复行,而GROUP BY则进行分组并可结合聚合函数进行计算。文章通过实例展示了两者在不同情况下的应用效果,并指出了GROUP BY在性能上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


他们的功能基本上是不一样的。
distinct消除重复行。
group  by是分组语句。
举例来说可能方便一点。
A表id  numa   1b   2c   3a   4c   7d   3e   5
如果只选出id列,用distinct和group  by  一样的。
select  distinct(id)  from  A;idabcde;select  id  from  A  group  by  id;idabcde;不同之处可能在于group  by有排序功能。
但是如果需要加上另一列num,结果不同。
group  by  是分组语句,如果用
select  id,num  from  A  group  by  id,num;
这样的结果在本例中与不加group  by是一样的,因为num各个不同。
但是如果select  id,num  from  A  group  by  id;
注意该语句是错误语句,因为num没有使用聚组函数,例如:sum(求和),avg(求平均数)
select  id,sum(num)  from  A  group  by  id;
id  sum(num)a   5b   2c   10d   3e   5
用distinct不显示重复的行。
在本例中select  distinct  id,num  from  A;的结果也和不加distinct一致。
因为id,num没有重复的行,而不是只看id。
group  by  功能更强大一些,另外推荐使用group  by。
因为distinct会导致全表扫描,而group  by如果索引建的
恰当的话,会有性能上的提高。

转载自:http://zhidao.baidu.com/link?url=zNRLuAZ7vM40YSFfeKJD4JYhmzHgQxd5m9GjEbnMXPlzTOTCAqXxHiZPxQv6qjMSgk4qduY4zjPzvQTsGdTOZPns14oAz7tuGiuiBxfALRW

另参考:http://liubin2010.iteye.com/blog/1130415

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值