你对Group By 的使用是否有误解

数据库group by 用到的也比较多,单列和聚合计算列放在一起时,进行分组查询操作。

但是如果没有聚合计算,只有单列进行查询,并且使用 group by语句呢??

下面进行试验检测,看看结果有什么不同。

以SQLserver 数据库测试

首先创建一个test表,只有col1 一列

CREATE TABLE [dbo].[test1] (
[col] varchar(255) COLLATE Chinese_PRC_CI_AS NULL
)

向其中插入数据

a
a
a
b
b
b
b
b
c
c
c
d

查询结果

所有数据都被查询出来

使用 group by :发现只有四条数据???

问号??你是否有很多小朋友????

通过结果,我们很容易发现,group by实现的效果好像和 distinct 相同

 

 其实不难理解,group by 就是要根据 列进行分组,当你有 聚合函数的时候那就给你统计出来聚合函数的结果,当你不要结果的时候,那就只给你进行合并

虽然效果和distinct相同,但是不建议大家这样使用,让人看了 一脸懵逼,还有就是容易误导新人。

所以不要所有的sql都带group by  

1 对新手 不好理解,不如distinct 更直观

2 容易忽视,导致结果不正确。 可能某天就忘了,为什么加了,从别的地方直接搬过来用了,得到的记过不正确。

3 可能会影响性能。

4 如果真的要使用的时候,sql会进行提醒。

当然 该使用的还是要使用的,只是不要画蛇添足。

原文地址:https://www.cnblogs.com/com-xiaolanchong/p/12744738.html