1.由于我的数据有个字段是由,号隔开
我想要分开,每个人单独一条,于是用到了mysql的help_topic表
SELECT
ss.salary_subsidy_id,
ss.subsidy_users_name,
substring_index( substring_index( ss.subsidy_users_id, ',', b.help_topic_id + 1 ), ',',- 1 ) AS
subsidy_users_id
FROM
salary_subsidy ss
LEFT JOIN mysql.help_topic b ON b.help_topic_id < ( length( ss.subsidy_users_id ) - length(REPLACE(ss.subsidy_users_id,',','') ) + 1 )
– 比较help_topic_id大小与subsidy_users_id 去掉,后的长度之差,小于则连接因为mysql.help_topic是0开始
– 意思就是重复连接复制了几份但是唯一不同的就是mysql.help_topic的id大小
原理解析:理解了上面注释后就很好理解了,
substring_index( substring_index( ss.subsidy_users_id, ‘,’, b.help_topic_id + 1 ), ‘,’,- 1 )因为不同的就是help_topic_id,subsidy_users_id都是复制了几份,只要根据不同点help_topic_id来动态截取字段就能实现。
实现结果:
全查出来就更好懂了吧:
所以如果你没有权限使用mysql自带表,就自己建一个,因为靠的是join连接,你要考虑下大小,不要字段太小,划分太多