在MySQL中转换数据

时间:2010-11-24 06:32:39

标签: mysql

我有下表

ID1 ID2 Type
1   x   A
1   y   A
1   z   B
.
.
.

我希望它像这样转换

ID1 A   B
1   x,y z

任何想法如何去做

我能得到的最好的是2行,一个是A值,一个是B值,使用group_concat(id2)和group by ID1,Type

1 个答案:

答案 0 :(得分:2)

我可以把它归结为一行,但有额外的逗号: - (

select ID1, 
       group_concat( if( `Type` = 'A', ID2, '') ) A, 
       group_concat( if( `Type` = 'B', ID2, '') ) B
from tab
group by ID1

给出:

+------+------+------+
| ID1  | A    | B    |
+------+------+------+
| 1    | x,y, | ,,z  |
+------+------+------+

提供NULL而不是''修复此问题:

select ID1, 
       group_concat( if( `Type`='A', ID2, NULL)) A, 
       group_concat( if(`Type`='B', ID2, NULL)) B
from tab
group by ID1;

给出:

+------+------+------+
| ID1  | A    | B    |
+------+------+------+
| 1    | x,y  | z    |
+------+------+------+