我有这样的桌子
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 select
和case 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/