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()这个是多个数据拼接成一个数据-逗号区分开