我有这样的桌子

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))`


这显然没有用。我仍然认为第一种选择可能是更好的方法,但是即使那样,我也不认为这是很好的选择。有什么想法可以使这些数据移动以使其更有条理吗?

最佳答案

您需要使用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

关于mysql - 在新表中将一列分为多个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28032826/

10-11 01:37