mysql 列用逗号隔开成多行数据
2017-07-24 00:00
246 查看
公司项目需要,用户所属行业,数据库存的是一个用户,多个行业,行业id 用逗号隔开,那么后台重构后,需要多条数据,
多谢网友的帖子指导: http://blog.csdn.net/ldl22847/article/details/47609727
这种方法的缺点在于,我们需要一个拥有连续数列的独立表(这里是incre_table)。并且连续数列的最大值一定要大于符合分割的值的个数。
例如有一行的mSize 有100个逗号分割的值,那么我们的incre_table 就需要有至少100个连续行。
当然,MySQL内部也有现成的连续数列表可用。如mysql.help_topic: help_topic_id 共有504个数值,一般能满足于大部分需求了。
多谢网友的帖子指导: http://blog.csdn.net/ldl22847/article/details/47609727
sql如下
select a.USER_ID,substring_index(substring_index(a.ATTENTION_INDUSTRY,',',b.help_topic_id+1),',',-1) industry,1,a.USER_ORDER,NOW(),NOW() from (select t.USER_ID ,t.ATTENTION_INDUSTRY ,t.USER_ORDER from lyx_oracle_ucenter.tab_uum_user_detail t where t.user_id in (select user_id from lyx_oracle_ucenter.tab_uum_users where company_id = 1) and t.ATTENTION_INDUSTRY is not null ) a join mysql.help_topic b on b.help_topic_id < (length(a.ATTENTION_INDUSTRY) - length(replace(a.ATTENTION_INDUSTRY,',',''))+1) order by a.USER_ID;
这种方法的缺点在于,我们需要一个拥有连续数列的独立表(这里是incre_table)。并且连续数列的最大值一定要大于符合分割的值的个数。
例如有一行的mSize 有100个逗号分割的值,那么我们的incre_table 就需要有至少100个连续行。
当然,MySQL内部也有现成的连续数列表可用。如mysql.help_topic: help_topic_id 共有504个数值,一般能满足于大部分需求了。
相关文章推荐
- mysql中使用FIND_IN_SET查询在逗号隔开的字符串中符合多个ID的数据
- Mysql 查询到的数据列以逗号方式隔开 返回
- mysql将逗号隔开的字符串转换为表数据
- mysql中使用FIND_IN_SET查询在逗号隔开的字符串中符合多个ID的数据
- Mysql 取字段值逗号第一个数据的查询语句
- mysql查询某字段的多条结果展示成按逗号隔开
- 怎么分割用逗号隔开的数据
- mysql 把字段进行逗号分隔成多条数据
- 解决从Mysql读取数据时出现括号和逗号的问题。
- mysql里创建自定义函数---将某字段以逗号分割并取出第一个数据
- 主表连接多行从表数据转成一行并用逗号连接
- 如何将字段中带逗号的SQLite数据库数据导入到MySQL
- 将多行数据insert进入MySQL
- MYSQL列中的数据以逗号隔开,如何查询
- 输入一组整型数据,以逗号隔开,寻找出现次数大于总数一半的数
- Oracle11.2新特性之listagg函数(多条数据用逗号隔开)
- MySQL的group_concat()函数合并多行数据
- 将用逗号分隔的字符串字段转为对应的多行数据
- mysql:find_in_set 查找逗号分隔的数据
- mysql 把字段进行逗号分隔成多条数据