如何在mysql

时间:2015-05-22 07:43:24

标签: mysql

下面有空表:

----------------
|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  |

1 个答案:

答案 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

DEMO