继续我的问题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
(以及其他行但你明白了)
如何建议我这样做?
答案 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
<强>输出强>