有这么一个表tb:

+--+----+
|id|name|
+--+----+
|1|小红|
|1|小明|
|2|小张|
|2|小张|
+--+----+

要以id分组,把name字段合并到一行。
使用mysql的group_concat函数很方便的实现:

mysql>select id,group_concat(name) from tb group by id;
+--+--------------------+
|id|group_concat(name)|
+--+--------------------+
|1|小红,小明|
|2|小张,小张|
+--+--------------------+

我在处理完后还要在字段上加item标签放入xml,即:

<item>1</item>
<item>2</item>
<item>小红,小明</item>
<item>小张,小张</item>

用sublime(shift+鼠标右键列选取编辑)或者其他编辑器都可以很方便的处理。

附group_concat的其他用法:

  • 合并后用分号分隔:替换group_concat函数为group_concat(name separator
  • 去冗余:group_concat(distinct name)
  • 倒序排列:group_concat(name order by name desc)