![](/img/trans.png)
[英]Codeigniter transferring data from one table to another using for loop
[英]Transferring data to another table using SQL
如果正在将我的产品类别从主表移到单独的表中。 目前其存储方式如下:
ProductId Product Name Cat1 Cat2 Cat3
----------------------------------------------------------------------
1 Something One Y N N
2 Another N Y N
3 Product Three Y N Y
4 Final One N N Y
我的新表如下所示:
CatID CatName
---------------------------
1 Cat1
2 Cat2
3 Cat3
ID CatID ProductID
-----------------------------------
1 1 1
2 2 2
3 1 1
4 1 3
5 3 4
我的问题是; 是否可以使用SQL将这些信息从主表转移到新表? 我有500多种产品,不喜欢手工做。
当然..假设新表在ID上有一个自动编号
insert into CatProduct(CatID, ProductID)
select 1, ProductID
from Product
where Cat1 = 'Y'
union all
select 2, ProductID
from Product
where Cat2 = 'Y'
union all
select 3, ProductID
from Product
where Cat3 = 'Y'
当然,假设您的表是Category,Product和CategoryXProduct(ID定义为标识):
INSERT CategoryXProduct ( CatID, ProductID )
SELECT 1, ProductId FROM Product WHERE Cat1 = 'Y'
INSERT CategoryXProduct ( CatID, ProductID )
SELECT 2, ProductId FROM Product WHERE Cat2 = 'Y'
INSERT CategoryXProduct ( CatID, ProductID )
SELECT 3, ProductId FROM Product WHERE Cat3 = 'Y'
尽管您可以直接使用MySQL查询进行这种转换,但为什么不仅使用外部脚本语言来处理呢? PHP,Python等都具有MySQL库。
对的,这是可能的。 就像SELECT中的INSERT一样:
INSERT into table1(id, name, fname)
SELECT id, lname, fname
FROM authors
WHERE somecondiction
您的产品类别关系是多对一的吗?(从给定的示例行中可以看到) 然后,您还可以考虑将产品的类别ID作为产品表中的一列添加,而不是创建联接表以避免在查询中与此表联接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.