group by与distinct的区别
2017-06-02 10:20
381 查看
举例来说可能方便一点。
A表
id num
a 1
b 2
c 3
a 4
c 7
d 3
e 5
如果只选出id列,用distinct和group by 一样的。
select distinct(id) from A;
id
a
b
c
d
e;
select id from A group by id;
id
a
b
c
d
e;
不同之处可能在于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 5
b 2
c 10
d 3
e 5
用distinct不显示重复的行。
在本例中
select distinct id,num from A;的结果也和不加distinct一致。
因为id,num没有重复的行,而不是只看id。
group by 功能更强大一些,另外推荐使用group by。
因为distinct会导致全表扫描,而group by如果索引建的
恰当的话,会有性能上的提高。
SELECT DISTINCT user_id
FROM TRANSACTIONS
SELECT user_id,COUNT(*) AS num
FROM TRANSACTIONS
GROUP BY user_id
------------
A表
id num
a 1
b 2
c 3
a 4
c 7
d 3
e 5
如果只选出id列,用distinct和group by 一样的。
select distinct(id) from A;
id
a
b
c
d
e;
select id from A group by id;
id
a
b
c
d
e;
不同之处可能在于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 5
b 2
c 10
d 3
e 5
用distinct不显示重复的行。
在本例中
select distinct id,num from A;的结果也和不加distinct一致。
因为id,num没有重复的行,而不是只看id。
group by 功能更强大一些,另外推荐使用group by。
因为distinct会导致全表扫描,而group by如果索引建的
恰当的话,会有性能上的提高。
SELECT DISTINCT user_id
FROM TRANSACTIONS
SELECT user_id,COUNT(*) AS num
FROM TRANSACTIONS
GROUP BY user_id
------------
相关文章推荐
- oracle中distinct和group by的区别
- DISTINCT和GROUP BY的区别
- mysql distinct 与 group by 的区别
- oracle中distinct和group by的区别
- SQL中Distinct和group by性能区别
- DISTINCT和GROUP BY的区别
- group by与distinct有何区别
- distinct 和 group by 在查询多列数据去重复时的区别在哪?
- mysql distinct 与 group by 的区别
- sql左外连接、右外连接、group by、distinct(区别)、intersect(交叉)、通配符、having
- Distinct 和Group by的区别
- (转)数据库 distinct 和 group by 的区别
- group by与distinct有何区别
- DISTINCT和GROUP BY的区别
- MySQL数据库与其他数据库的3个常用语法区别(外链接、分组排序row_number() over(partition by ) 、group by和distinct)
- DISTINCT和GROUP BY的区别
- distinct的讲解以及与Group By的区别
- DISTINCT和GROUP BY的区别
- mysql联合查询是用DISTINCT和GROUP BY之间的性能区别
- Sql distinct和group by的区别