MySQL:转换具有多列的行并插入多行

时间:2016-02-02 01:16:38

标签: mysql

我创建了一个表,列出了3个产品,每个产品都有一列。几个月来一直很好 - 直到我必须添加更多产品。

tblSubmission

--------------------------------
|submissionID|Prod1|Prod2|Prod3|  
-------------|-----|-----|------
|101         |2    |0    |1    |  
|102         |0    |0    |1    |  
|103         |3    |6    |4    |  
--------------------------------

我已尝试但无法将表拆分为按提交ID分组的多行,并添加每个productCode的数量。

tblSubmissionProduct

--------------------------------------------------------------
|submissionProductID|submissionID|productCode|productQuantity| 
--------------------|------------|-----------|----------------
|1                  |101         |Prod1      |2              |  
|2                  |101         |Prod3      |1              |  
|3                  |102         |Prod3      |1              |  
|4                  |103         |Prod1      |3              |  
|5                  |103         |Prod2      |6              |  
|6                  |103         |Prod3      |4              |  
--------------------------------------------------------------

submissionProductID定义为auto_increment

有没有比使用拆分功能更简单的方法呢?

1 个答案:

答案 0 :(得分:1)

您可以使用三个insertsunion all

执行此操作
insert into tbl_SubmissionProduct(submissionId, productCode, productQUantity)
    select submissionId, 'Prod1', prod1
    from tblSubmission
    union all
    select submissionId, 'Prod2', prod2
    from tblSubmission
    union all
    select submissionId, 'Prod3', prod3
    from tblSubmission;

你的新结构是明智之举。