在新表中将一列分成多个

时间:2015-01-19 20:15:53

标签: mysql sql

我有一个像这样设置的表

id (PK) | regID (FK) | fieldID | fieldValue

有多个字段可用于输入数据,这些字段都存储在fieldValue列中。我想要做的是将这些数据迁移到第二个看起来像

的表
regID | Name | Occupation | etc | etc

其中列(regID除外)与fieldID相关联。

我首先尝试使用唯一的regID填充新表,然后尝试根据匹配的regID和相应的fieldID更新其余的行信息,但我无法与之相提并论。

然后我尝试了类似

的东西
`INSERT INTO newData(regID, pName) VALUES
((SELECT distinct regID FROM fieldData),
 (SELECT fieldValue FROM fieldData WHERE fieldID= 14 ORDER BY regID))`

显然不起作用。我仍然认为第一种选择可能是更好的方式,但即便如此,我认为它并不好。任何想法如何让这些数据更有条理?

1 个答案:

答案 0 :(得分:0)

您需要使用case based aggregation

以下是使用insert into selectcase based aggregation

执行此操作的方法
INSERT INTO newData(regID, pName, occupation) 
select  regID,
        max(case when filedid=14 then fieldDate end) as pName,
        max(case when filedid=15 then fieldDate end) as occupation,
        .....
from fieldData
group by regID