MySQL将一个字段中以逗号分隔的取出来形成新的字段实现

 更新时间:2020年10月28日 10:27:03   作者:旧夏潜入梦  
这篇文章主要介绍了MySQL将一个字段中以逗号分隔的取出来形成新的字段实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1例如:要把如图1的字段拆分图2

select account_id,
    substring_index(substring_index(a.related_shop_ids,','
    ,b.help_topic_id+1),',',-1) shopid
  from 
    sales_hang_account a
  join
    mysql.help_topic b
    on b.help_topic_id < (length(a.related_shop_ids) -   length(replace(a.related_shop_ids,',',''))+1) 
  order by a.account_id

2:然后和shops表进行连接查询取出我们需要的字段,我这里需要取出name

select s.`name` as shopname,a.account_id from shops s
inner JOIN (

select account_id,
    substring_index(substring_index(a.related_shop_ids,','
    ,b.help_topic_id+1),',',-1) shopid
  from 
    sales_hang_account a
  join
    mysql.help_topic b
    on b.help_topic_id < (length(a.related_shop_ids) -   length(replace(a.related_shop_ids,',',''))+1) 
  order by a.account_id)a on s.shop_id=a.shopid

3:将 account_id相同合并成一行,以逗号隔开

//这两个是网上的例子
select ID,group_concat(NAME) as NAME from table group by ID;

select ID,group_concat(NAME SEPARATOR ';') as NAME from a group by ID;
//借助上面两个参考
select account_id,GROUP_CONCAT(shopname SEPARATOR',')as shopname from (select s.`name` as shopname,a.account_id from shops s
inner JOIN (

select account_id,
    substring_index(substring_index(a.related_shop_ids,','
    ,b.help_topic_id+1),',',-1) shopid
  from 
    sales_hang_account a
  join
    mysql.help_topic b
    on b.help_topic_id < (length(a.related_shop_ids) -   length(replace(a.related_shop_ids,',',''))+1) 
  order by a.account_id)a on s.shop_id=a.shopid) a GROUP BY account_id

效果如下

第二种方法

select g.account_id,g.related_shop_ids,GROUP_CONCAT(s.name)as shopname from sales_hang_account g left join shops s on FIND_IN_SET(s.shop_id , g.related_shop_ids)
GROUP BY g.account_id

SqlServer

 [Product] -- 该字段存储格式为 7,8,9,11,10,12 ,数据类型为nvarchar
select id,ProductName=stuff((select ',' + product_chinaname from base_supplier_product where charindex(','+ltrim(productid)+',',','+ Product + ',') > 0 for xml path('') ), 1, 1, '')
 FROM base_Pre_sale_project

结果

到此这篇关于MySQL将一个字段中以逗号分隔的取出来形成新的字段实现的文章就介绍到这了,更多相关MySQL字段逗号分隔内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql socket文件作用详解

    mysql socket文件作用详解

    这篇文章主要介绍了mysql socket文件作用的相关资料,需要的朋友可以参考下
    2016-09-09
  • MySQL 事务autocommit自动提交操作

    MySQL 事务autocommit自动提交操作

    这篇文章主要介绍了MySQL 事务autocommit自动提交操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • percona-toolkit对MySQL的复制和监控类操作教程

    percona-toolkit对MySQL的复制和监控类操作教程

    这篇文章主要介绍了使用percona-toolkit对MySQL进行复制和监控类操作的教程,percona-toolkit是一款强大的MySQL辅助软件,需要的朋友可以参考下
    2015-11-11
  • Mysql中的日期时间函数小结

    Mysql中的日期时间函数小结

    本文主要介绍了Mysql中的日期时间函数小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Mysql分区表的管理与维护

    Mysql分区表的管理与维护

    改变一个表的分区方案只需使用alter table 加 partition_options 子句就可以了。这篇文章主要介绍了Mysql分区表的管理与维护,非常不错,感兴趣的朋友一起学习吧,需要的朋友可以参考下
    2016-08-08
  • Ubuntu移除mysql后重新安装的方法

    Ubuntu移除mysql后重新安装的方法

    这篇文章主要介绍了Ubuntu移除mysql后重新安装的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • 关于mysql 8.x 中insert ignore的性能问题

    关于mysql 8.x 中insert ignore的性能问题

    这篇文章主要介绍了关于mysql 8.x 中insert ignore的性能问题,具有很好的参考价值,希望对大家有所帮助。
    2022-08-08
  • MySQL调优之SQL查询深度分页问题

    MySQL调优之SQL查询深度分页问题

    本文主要介绍了MySQL调优之SQL查询深度分页问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • MySql 查询符合条件的最新数据行

    MySql 查询符合条件的最新数据行

    这篇文章主要介绍了MySql 怎么查出符合条件的最新的数据行,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • mysql配置文件的使用教程

    mysql配置文件的使用教程

    这篇文章主要介绍了mysql配置文件的使用教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-10-10

最新评论