数据库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会进行提醒。
当然 该使用的还是要使用的,只是不要画蛇添足。