繁体   English   中英

使用SQL将数据传输到另一个表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM