座机 发表于 2018-10-1 12:25:02

mysql 和sqlserver的 多行合并成一行

  mysql 和sqlserver的 多行合并成一行
  mysql多行合并:
  mysql 内置函数 group_concat(experSEPARATOR " " )
  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 fromdbo.perfom

  select( select CAST(EventClass as varchar)+';'
  fromdbo.perfom for xml path('')) as A
  结果:

  for xmlpath的参考链接:
  http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html

页: [1]
查看完整版本: mysql 和sqlserver的 多行合并成一行