MySQL takes out the comma-separated values ​​from a field to form a new field

MySQL takes out the comma-separated values ​​from a field to form a new field

1For example: To split the fields shown in Figure 1 into Figure 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: Then connect with the shops table to query and extract the fields we need. Here I need to extract 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: Combine the same account_id into one line, separated by commas

//These two are examples from the Internet 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;
//With the help of the above two references 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

The effect is as follows

Second method

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] -- The storage format of this field is 7,8,9,11,10,12, and the data type is 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

result

This is the end of this article about how to extract comma-separated values ​​from a field in MySQL to form a new field. For more information about comma-separated values ​​in MySQL fields, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Two methods of MySql comma concatenation string query
  • Mysql query statement to get the first data of the comma in the field value
  • How to use comma delimiters in MySQL fields
  • How to convert a column of comma-separated values ​​into columns in MySQL

<<:  Implementation of fastdfs+nginx cluster construction

>>:  Detailed explanation of built-in methods of javascript array

Recommend

Nginx server https configuration method example

Linux: Linux version 3.10.0-123.9.3.el7.x86_64 Ng...

Advantages and disadvantages of common MySQL storage engines

Table of contents View all storage engines InnoDB...

Notes on Using Textarea

Why mention textarea specifically? Because the tex...

Detailed explanation of gcc command usage under Linux system

Table of contents 1. Preprocessing 2. Compilation...

Detailed explanation of React event binding

1. What is In react applications, event names are...

Detailed steps for configuring Tomcat server in IDEA 2020

The steps for configuring Tomcat in IDEA 2020 are...

A collection of common uses of HTML meta tags

What is a mata tag The <meta> element provi...

How to draw a mind map in a mini program

Table of contents What is a mind map? How to draw...

How to use node to implement static file caching

Table of contents cache Cache location classifica...