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

标签 mysql

我创建了一个表,其中列出了 3 个产品,每个产品有一列。这几个月来效果非常好 - 直到我当然不得不添加更多产品。

tbl提交

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

我已尝试过,但无法将表格拆分为按submissionID 分组的多行,并添加每个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

有没有比使用 split 函数更简单的方法来做到这一点?

最佳答案

您可以使用三个插入联合所有来完成此操作:

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;

您的新结构是明智之举。

关于MySQL:转换具有多列的行并插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35143417/

相关文章:

python - SQLAlchemy 多个 AND 表达式在同一条目上创建多个选择

Mysql 使用用户变量作为临时存储来交换具有唯一值的行的效率和安全性

mysql - Elasticsearch : Advanced Filter Query

php - 当代码只运行一次时,为什么我的网站会插入两条记录!

mysql - 如何通过 SQL 选择一个字段重复且另一字段不同的内容

java - 使用 JDBC 和 MySQL 优化大量插入

mysql - 使用 Ruby on Rails 索引多列

MYSQL查询同一个字段两个不同的id

sql - mysql中的最大值(长度(字段))

c# - Mysql C# 无法连接到主机,但它可以