mysql group_concat合并多条记录某一字段

一个订单记录对应多个订单商品记录,如下:

订单记录:

SELECT o.order_sn,o.create_time,o.store_title,o.buyer_name,o.buyer_phone,o.buyer_address,o.wait_out_storage_total,o.back FROM wms_orders o WHERE o.order_sn='1000000000286001';

这里写图片描述

订单商品记录:

SELECT og.order_sn,og.goods_name,og.goods_num,og.goods_price,og.oe,og.wait_out_storage_number FROM wms_orders_goods og where og.order_sn='1000000000286001';

这里写图片描述

在待出库列表中,我们需要展示的信息包括:下单时间,订单号,买家名称,出库仓库,出库商品,待出库量。出库商品字段就需要从多个订单商品中去获取,以前的话可能想都不想Mysql里有没有什么函数可以直接拼接出结果,直接去查出订单商品记录,循环遍历。

之前总结了很多mysql中的函数,字符串拼接的话,可以用concat(),但是此函数是针对一条记录中,可以将不同的字段拼接,并不适用多条记录的某一字段。查了一下,mysql中group_concat函数就可以获得到这样的结果。

查询待出库单列表:

SELECT DISTINCT o.id_,o.order_sn,o.create_time,o.wait_out_storage_total,o.back,group_concat(og.goods_name) AS goods_names ,o.store_title FROM wms_orders o LEFT JOIN wms_orders_goods og ON o.id_=og.order_id WHERE o.wait_out_storage_total>0 GROUP BY o.id_;

这里写图片描述

需要注意的是:

  1. group_concat只有与group by语句同时使用才能产生效果。
  2. 需要将拼接的结果去重的话,可与DISTINCT结合使用即可。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值