mysql group by 的问题

谢飞机_ 发布于 10/21 18:18
阅读 841
收藏 0

解读下一代网络:算力网络正从理想照进现实!>>>

1.group by field1,field2

2.group by  concat(field1,field2)

问题1: 1和2的区别    1和2 的解析过程

加载中
0
saileidigi
saileidigi

表:

field1 field2
aa b
a bb

 

1的结果是:

field1 field2
a bb
aa b

 

2的结果是:

field1 field2
aa b
a bb

相当于

field3
aab
abb

 

1是前排 field1 ,遇到相同的 field1 再排  field2

2是把 field1 和 field2 连接起来再排

谢飞机_
谢飞机_
回复 @saileidigi : select CONCAT(gun_name,gun_des), COUNT(*) from test GROUP BY CONCAT(gun_name,gun_des) 还是两条 大佬有微信吗 私发我一下?
谢飞机_
谢飞机_
回复 @saileidigi : 可以用啊 设置mysql 参数就可以 你的意思 我设置以后 这样 group by 就不好使了是吧 就是相当于 select * from 明白了 谢谢
saileidigi
saileidigi
回复 @谢飞机_ : SELECT * + GROUP BY 不可能可以用。正常是SELECT field(存在 GROUP BY 的 field)+ GROUP BY 。如:SELECT CONCAT(gun_name,gun_des), count(*) FROM test GROUP BY CONCAT(gun_name,gun_des);
谢飞机_
谢飞机_
回复 @saileidigi : select * from test GROUP BY gun_name,gun_des select * from test GROUP BY CONCAT(gun_name,gun_des)
saileidigi
saileidigi
回复 @谢飞机_ : group 完整的 sql 你是怎么写的
下一页
0
tonglingbaoyu
tonglingbaoyu
field1 field2

 ''           b

b            ''

         1.group by field1,field2   结果会是两条

         2.group by  concat(field1,field2) 结果只有一条

谢飞机_
谢飞机_
感谢你的回复
0
皖渝-驻OSC大使
皖渝-驻OSC大使

这很显然,1是两个字段分别分组,2是一个拼接后的字段分组

谢飞机_
谢飞机_
感谢回复
0
Keifei
Keifei

你这第二个比第一个多加了个函数啊,第二个是拼起来之后再分组,第一个是直接按照两个字段分组,如果有空值的话可能会影响结果。

谢飞机_
谢飞机_
回复 @Keifei : 明白了 类似于看kv数据库的前缀搜索
Keifei
Keifei
回复 @谢飞机_ : 拼接起来再分组要看拼接结果,两个字段有可能分开时候数据不一样,但是拼接完就一样了,比如a字段第一行是123,b字段是456,a字段第二行是1234,b字段是56.这样的话你拼接完再分组,那么他们就是一组的,但是你不拼接,那么他们就不在同一组啊。
谢飞机_
谢飞机_
回复 @Keifei : 换句话说 他俩的使用场景 有什么不同?
Keifei
Keifei
回复 @谢飞机_ : 这不是效率的问题,这是逻辑就不一样。。。
谢飞机_
谢飞机_
奥 我测试 看看 两者的效率
0
j
jun_anderson

1可以用到索引,2不可以

谢飞机_
谢飞机_
你说的不对 都可以用到索引
谢飞机_
谢飞机_
我测试一下 看看
0
saileidigi
saileidigi
saileidigi
回复 @谢飞机_ : 把 null 的忽略,只看前2条
谢飞机_
谢飞机_
你这例子不对啊 null 值 对于group by 查询的结果是有影响的
返回顶部
顶部