将数据从一个表转移到另一个表?

时间:2017-04-10 18:00:12

标签: mysql sql

继续我的问题here和一些有用的建议。

我目前有一个表格,其中列是年龄范围(0-10,10-20等)并包含整数人口值。

我创建了一个新表,我想从第一个表中转移数据并将其插入到新表中,其中第一个表中的一行需要新表中的七行。例如。一排:

Id | Region |  0 | 10 | 20 | 30 | 40 | 50
-----------------------------------------
01 | London | 24 | 45 | 38 | 29 | 36 | 49

变为

Id | Region | AgeRange | Population
-----------------------------------
 1 |   1    |     0    |     24
 2 |   1    |    10    |     45
 3 |   1    |    20    |     38

(以及其他行但你明白了)

如何建议我这样做?

1 个答案:

答案 0 :(得分:1)

首先使用UNION ALL取消对列的拆分,然后使用变量分配row_number或id

<强> SQL DEMO

SELECT t.*, @id := @id + 1 as  rn
FROM (
    SELECT Region, 0 AgeRange, `0` as Population
    FROM YourTable
    UNION ALL
    SELECT Region, 10 as AgeRange,`10` as Population
    FROM YourTable
    UNION ALL
    SELECT Region, 20 as AgeRange, `20` asPopulation
    FROM YourTable
    UNION ALL
    SELECT Region, 30 as AgeRange, `30` asPopulation
    FROM YourTable
    UNION ALL
    SELECT Region, 40 as AgeRange, `40` asPopulation
    FROM YourTable
    UNION ALL
    SELECT Region, 50 as AgeRange, `50` asPopulation
    FROM YourTable
 ) t
CROSS  JOIN (SELECT @id := 0) var
ORDER BY Region, AgeRange   

<强>输出

enter image description here

相关问题