我在MySQL中使用两个表,一个表中有一些数据,另一个表中将填充此数据,但是-表中有一个字段具有逗号分隔的值,我需要使用它们来创建单独的值(类似)记录。
例如:
数据表:"students"
Screenshot of table data is coming from
数据将进入名为"student_season_cross"
的表中,并将填充名为"student_id"
和"league_id"
的字段,但是我希望它将新记录基于原始表中的“ old_leagues” 。
因此,例如:原始表中的数据如下所示:
student_id | old_leagues
38 | 9, 33
39 | 8
40 | 3, 46
将像这样填充新表:
ss_index | student_id | league_id
auto increment | 38 | 9
auto increment | 38 | 33
auto increment | 39 | 8
auto increment | 40 | 3
auto increment | 40 | 46
我当时以为这是一个循环,但我只是无法将其缠住。有什么想法吗?
答案 0 :(得分:0)
这是FIND_IN_SET
派上用场的几次。您可以使用此函数来检索(特定)逗号分隔列表的段。使用此功能,我们可以将任何学生记录加入可用联赛的记录中;因此结果如下:
league | student
==============
1 | 38
1 | 39
1 | 40
2 | 39
3 | 22
3 | 23
您可以在这里使用FIND_IN_SET
来确定学生参加联赛的情况。我还要假设一个名为leagues
的表,其中所有leagues.id
下的联赛ID:
INESRT INTO new_leagues (student_id, league_id)
SELECT origial_table.student_id
leagues.id
FROM leagues
INNER JOIN original_table
-- join a student record every time FIND_IN_SET matches
ON FIND_IN_SET(leagues.id, original_table.old_leagues) >= 0
在我正在开发自己的开发服务器时,您必须原谅我目前无法对此进行测试,但是希望您可以从此处收集有效的答案。