mysql 和sqlserver的 多行合并成一行
mysql 多行合并:
mysql 内置函数 group_concat(exper SEPARATOR " " )
exper:列明
SEPARATOR " ": 行分隔符 ,这里表示的是使用空格分隔多行
mysql> select * from tmp_02 ;
+------------+---------+
| Fclient | ct |
+------------+---------+
| 安卓 | 1858799 |
| IOS | 522568 |
| 传奇客户端 | 472561 |
+------------+---------+
3 rows in set (0.00 sec)
多行合并 :
mysql> select convert(GROUP_CONCAT(concat(Fclient,‘:‘,ct) SEPARATOR " ") using utf8) tkey from tmp_02;
+-----------------------------------------------+
| tkey |
+-----------------------------------------------+
| 安卓:1858799 IOS:522568 传奇客户端:472561 |
+-----------------------------------------------+
1 row in set (0.00 sec)
note:行分隔符可以是任意的字符 。
参考链接: http://blog.sina.com.cn/s/blog_4e808acf01009qna.html
在sqlserver中 ,2000以前的版本(包括2000)需要手动写函数实现多行合并一行的功能。
自2005之后(包括2005)内置了for xml path 的功能可以很轻松的实现多行合并一行的功能
例子:
select EventClass from dbo.perfom
select( select CAST(EventClass as varchar)+‘;‘
from dbo.perfom for xml path(‘‘) ) as A
结果:
for xml path的参考链接:
http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html
本文出自 “SQLServer MySQL” 博客,请务必保留此出处http://dwchaoyue.blog.51cto.com/2826417/1546125