MySql 数据库分组查询获每组里得字段集合

在开发中,有时候为了效率,会直接使用数据库sql语句直接来查询数据

比如私用dapper时,复杂得回使用原生语句查询,在使用到分组语句时,也会有其他意图

1、比如今天需要根据需求分型和第三产业分类编码来分组查询统计出公司总数、公司名称、截至时间段等

如果直接使用简单得Group by分组,如下

select sp.expected_delivery_time,sp.expected_delivery_time,

COUNT(bc.CompanyName),bc.CompanyName
from supd_demand_info  sp
INNER JOIN base_companyinfo bc

on sp.CreatorId=bc.UserId
GROUP BY sp.DemandType,sp.title

如上简单写得话,查询出来得每组数据中, bc.CompanyName 只有一条,查询结果如下

但实际第一和第二组数据中,CompanyName应该是两条

如使用GROUP_CONCAT(exper)函数改成如下,即可解决

注意:MySQL的GROUP_CONCAT函数来获取分组后的所有记录。GROUP_CONCAT函数可以将每个分组中的记录连接成一个字符串,并以逗号分隔。

2、另外知识点:上面需要获取每组中预期收获时间段数据,单上面得写法只能分两个字段获取,再在你的代码里拼接,但是如果使用如下mysql得拼接函数即可直接查询出来,更多写法请参考后续的文章mysql拼接函数

select CONCAT(MIN(sp.expected_delivery_time),'至',MAX(sp.expected_delivery_time)) as dateStr,
COUNT(bc.CompanyName),GROUP_CONCAT(bc.CompanyName)
from supd_demand_info  sp
INNER JOIN base_companyinfo bc on sp.CreatorId=bc.UserId   -- and bc.City='410700'
GROUP BY sp.DemandType,sp.title

查询结果如下:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值