将多列合并为一列,为mysql中的每一列创建一行

时间:2012-05-16 04:04:50

标签: mysql unpivot

我有一个包含以下列的mysql表

SNP
Probe
Genotype_00
Mean_00
Std_00
Genotype_01
Mean_01
Std_01
Genotype_11
Mean_11
Std_11

我希望该表包含以下列:

SNP
Probe
Genotype
Mean 
Std

每对(SNP,探针)我有三行,一行对应每种基因型。

例如行

rs1 probe1 AA 5.6 0.3 AG 4.3 0.2 GG 3.4 0.1

应该转化为

rs1 probe1 AA 5.6 0.3
rs1 probe1 AG 4.3 0.2
rs1 probe1 GG 3.4 0.1

任何人都可以帮我找到办法吗? 非常感谢,任何建议将不胜感激

洛舍

2 个答案:

答案 0 :(得分:1)

使用以下列创建表。

SNP
Probe
Genotype
Mean 
Std

然后逐个执行这些SQL语句

INSERT INTO new_table
SELECT SNP, Probe, Genotype_00, Mean_00, Std_00
FROM old_table

INSERT INTO new_table
SELECT SNP, Probe, Genotype_01, Mean_00, Std_01
FROM old_table


INSERT INTO new_table
SELECT SNP, Probe, Genotype_11, Mean_00, Std_11
FROM old_table

答案 1 :(得分:0)

您可以使用SNP Probe Genotype Mean Std创建一个新表,然后使用

insert into NEWTABLE
select SNP, Probe, Genotype_00, Mean_00, Std_00
from old table

然后将00更改为01和11,再次运行查询。

但是,由于snp对不会彼此相邻,因此您可能需要创建索引。