我有很多需要迁移到新表的数据。但是,表结构已更改。
所以我的问题是,我需要构建一个MySQL查询,或者SProc,它将实现以下目的:
我目前的数据集如下:
uuid level0 level1 level2
FFC28DA7-9753-4D83-BAFF-A3623EAF6545 Insurance
2A772655-E580-40BC-B08F-4D279AEEEC74 Profile Age_Group 25-34
2A772655-E580-40BC-B08F-4D279AEEEC74 Profile Gender M
2A772655-E580-40BC-B08F-4D279AEEEC74 Profile State NSW
2A772655-E580-40BC-B08F-4D279AEEEC74 Profile Country AU
821B10BC-EED7-4E72-A77D-5119A2C28331 Profile Age_Group 25-34
821B10BC-EED7-4E72-A77D-5119A2C28331 Profile Gender M
FFC28DA7-9753-4D83-BAFF-A3623EAF6545 Insurance Health
有很多记录。
但是现在,数据需要迁移到新表中,因此查看上面的数据集,需要像这样
uuid taxid_n
FFC28DA7-9753-4D83-BAFF-A3623EAF6545 Insurance
FFC28DA7-9753-4D83-BAFF-A3623EAF6545 Health
2A772655-E580-40BC-B08F-4D279AEEEC74 Profile
2A772655-E580-40BC-B08F-4D279AEEEC74 Age_Group
2A772655-E580-40BC-B08F-4D279AEEEC74 25-34
2A772655-E580-40BC-B08F-4D279AEEEC74 Gender
2A772655-E580-40BC-B08F-4D279AEEEC74 M
2A772655-E580-40BC-B08F-4D279AEEEC74 State
2A772655-E580-40BC-B08F-4D279AEEEC74 NSW
2A772655-E580-40BC-B08F-4D279AEEEC74 Country
2A772655-E580-40BC-B08F-4D279AEEEC74 AU
821B10BC-EED7-4E72-A77D-5119A2C28331 Profile
821B10BC-EED7-4E72-A77D-5119A2C28331 Age_Group
821B10BC-EED7-4E72-A77D-5119A2C28331 25-34
821B10BC-EED7-4E72-A77D-5119A2C28331 Gender
821B10BC-EED7-4E72-A77D-5119A2C28331 M
所以基本上,每个级别都是一个新行,加上父级别level0将不会重复。那就是Profile>性别>男性和简介>孩子>性别>男性,将由uuid有6条记录,而不是7条记录。 uuids将是独一无二的。
注意:有6个级别是level0 - level5,因此查询或SProc应该适应它。
获取原始数据的查询将是:
SELECT
uuid,
level0, level1,
level2, level3,
level4, level5,
level6, pubid,
siteid, ipaddress,
dt, status,
created, now ()
FROM
segmentdata
WHERE
status = 1
对此有任何帮助,会很棒!
由于
答案 0 :(得分:0)
您可以使用union
select uid, level0 as level from segmentdata
union
select uid, level1 from segmentdata
union
select uid, level2 from segmentdata
union
select uid, level3 from segmentdata
union
select uid, level4 from segmentdata
union
select uid, level5 from segmentdata;
union
将删除重复项。