Mysql多表内连接、左连接、右连接以及全连接查询 1对多的解决办法、值合并为一行

10 篇文章 0 订阅
9 篇文章 0 订阅

Mysql多表内连接、左连接、右连接以及全连接查询 1对多的解决办法、值合并为一行

一个表left join多个表并导出csv本身是很简单的事。但是主表的一列有多个值,一开始用逗号分隔保存数据,这样做的好处是方便应用程序处理,但是对于mysql来说这是anti-pattern的做法。果然,在写left join的时候无法实现一个field保存多ID,并跟关联表匹配输出csv文件。(尝试了find_in_set 只能输入一行)

还是应该遵守RMDB的范式来设计DB,将多值的列,拆分出一个新表来保存。这样写left join时就方便一对一处理。最后,要输出多个值时,多值会存在多列,

可以采用、any_value()、GROUP_CONCAT() … group by将多列值合并为一行。

  • 正常示例、不是想要的数据
    在这里插入图片描述
  • 最终结果是:
    在这里插入图片描述

使用合拼法则:如下

但、使用-----:any_value()或GROUP_CONCAT()

说明:any_value()这个是去取一条数据、GROUP_CONCAT()这个是多个数据拼接成一个数据-逗号区分开

例子:使用、GROUP_CONCAT()

在这里插入图片描述

例子:使用 any_value()

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值