MySQL查询把多列返回结果集拼装成一个字段查询把多列返回结果集拼装成一个字段
使用场景使用场景
mysql中有种可以通过join相关操作进行表与表之间的方式查询不同结果集,但是在一对多的情况下,关键查询的结果是多条的.例如:班级和学习的
关系,我想很直观的看到班级和学生的情况,列表显示出班级的信息和班级的男生女生姓名,通过关联查询肯定是无法实现的.
解决方式解决方式
1首先我们了解上述相关使用场景之后,结合相关如下相关示例
单个列表中,需要显示不同快递公司的配送区域,相关表中存储是的对应的地区id字段
2主表中记录相关业务数据,然后关联相地址表处理结果集,就可以得到我们需要的结果
原数据
最终需要的数据
执行的SQL如下
SELECT
template.templete_id, template.is_transport, template.is_take_order, template.is_stop,
GROUP_CONCAT(region.region_name) province, template.first_heavy_price,
template.first_heavy_cost, template.first_heavy_weight,
template.continued_heavy_base, template.continued_heavy_price,
template.continued_heavy_cost, template.weight_unit
FROM kd_up_freight_template template LEFT JOIN kd_up_express up
ON template.up_express_id = up.up_express_id
LEFT JOIN kd_region region ON FIND_IN_SET(region.region_id, template.province)
WHERE template.isdel = 0
GROUP BY template.templete_id
实现思路实现思路
可能业务场景不太一样,最终的处理方式也不一样
上面的SQL主要是通过主表中的地址ID集合关联地址表
关联方式通过FIND_IN_SET()函数处理
然后通过主表的ID进行分组
处理返回数据中通过GROUP_CONCAT()函数进行地址名称处理
FIND_IN_SET()
评论0