使用MySQL Query将N值拆分为N行

时间:2017-09-14 07:52:38

标签: mysql

我有表培训,我想将Training_name列值拆分为多行:

SLNO Category Training_name
1     A        1,5,9,15,12,16
2     B        2,6,10,17
3     C        1,3,7,19,14,18

我使用下面的查询,但使用此查询我只能拆分为2行?

SELECT training.SLNO,training.CATEGORY, SubString_Index(training.TRAINING_NAME, ',', 1) AS TRAINING_NAME FROM training UNION ALL SELECT training.SLNO,training.CATEGORY, SubString_Index(training.TRAINING_NAME, ',', -1) FROM training

我想获得下面给出的表格,请帮帮我

SLNO Category Training_name
1      A        1
1      A        5
1      A        9
1      A        15
1      A        12
1      A        16
2      B        2
2      B        6
2      B        10
2      B        17
3      C        1
3      C        3
3      C        7
3      C        19
3      C        14
3      C        18

1 个答案:

答案 0 :(得分:1)

如果每个训练名称条目都有两个以逗号分隔的值,则此选项可以正常运行。

SELECT
    PARENT_SLNO,
    RNO,
    TRAINING_CATEGORY,
    SUBSTRING_INDEX(TRAINING_NAME, ',', 1) AS TRAINING_NAME
FROM yourTable
UNION ALL
SELECT
    PARENT_SLNO,
    RNO,
    TRAINING_CATEGORY,
    SUBSTRING_INDEX(TRAINING_NAME, ',', -1)
FROM yourTable

如果要转换整个表,则可以将上述查询选择到新表中,删除旧表,然后重命名新表。如果您的CSV数据可能包含不同数量的逗号,那么我的查询将需要修改,但一般方法可能保持不变。