如果正在将我的prodiuct类别从主表中移出到单独的表中。目前它的存储方式如下:
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种产品,并不想手工制作。
答案 0 :(得分:2)
当然..假设新表在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'
答案 1 :(得分:1)
当然,假设您的表是类别,产品和类别产品(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'
答案 2 :(得分:0)
虽然您可以直接使用MySQL查询进行此类转换,但为什么不使用外部脚本语言来处理呢? PHP,Python等都有MySQL库。
答案 3 :(得分:0)
是的,有可能。像SELECT中的INSERT一样......
INSERT into table1(id, name, fname)
SELECT id, lname, fname
FROM authors
WHERE somecondiction
答案 4 :(得分:0)
您的产品类别关系是多对一的(正如我从给出的示例行中看到的那样)?然后,您还可以考虑将产品的类别ID添加为products表中的列,而不是创建连接表以避免在查询中与此表连接。