下面有空表:
----------------
|id|c_id|c1|c2|c3|c4|
----------------
| | | | | | |
另一张桌子:
|id|c_id|type|value|
--------------------
1 | 1 | c1 | 234 |
-------------------
2 | 1 | c2 | 211 |
-------------------
3 | 3 | c2 | 4 |
--------------------
5 | 4 | c3 | 54 |
--------------------
5 | 5 | c4 | 789 |
--------------------
6 | 2 | c1 | 234 |
我想用table2中的值填充table1。正如你可以看到列"键入"将分为表1中的4列。如何使用1个查询执行此操作?
我的期望:
|id|c_id| c1 | c2 | c3 | c4 |
----------------------------------
|1 | 1 | 234 | 211 | null | null |
----------------------------------
|2 | 2 | 234 | null| null | null |
----------------------------------
|3 | 3 | null| 4 | null | null |
----------------------------------
|4 | 4 | null| null| 54 | null |
----------------------------------
|5 | 5 | null| null| null | 789 |
答案 0 :(得分:1)
这是一个普通的pivot table操作:
INSERT INTO table1 (c_id, c1, c2, c3, c4)
SELECT c_id, MAX(CASE WHEN type = 'c1' THEN `value` END) AS c1,
MAX(CASE WHEN type = 'c2' THEN `value` END) AS c2,
MAX(CASE WHEN type = 'c3' THEN `value` END) AS c3,
MAX(CASE WHEN type = 'c4' THEN `value` END) AS c4
FROM table2
GROUP BY c_id