合并拼接查询

简介: 示例表 tb 数据如下 id   value—————1    aa1    bb2    aaa2    bbb2    ccc 第一种 Sql代码   SELECT id,           [val]=( SELECT [value] +','        ...

示例表 tb 数据如下

id   value
—————
1    aa
1    bb
2    aaa
2    bbb
2    ccc

第一种

Sql代码 
  收藏代码
  1. SELECT id,   
  2.        [val]=( SELECT [value] +','   
  3.                FROM tb AS b   
  4.                WHERE b.id = a.id   
  5.                FOR XML PATH('')  )   
  6. FROM tb AS a    

   第一种显示结果 
   1 aa,bb, 
   1 aa,bb, 
   2 aaa,bbb,ccc, 
   2 aaa,bbb,ccc, 
   2 aaa,bbb,ccc,

第二种

Sql代码 
  收藏代码
  1. SELECT id,   
  2.             [val]=( SELECT [value] +','   
  3.                     FROM tb AS b   
  4.                     WHERE b.id = a.id   
  5.                     FOR XML PATH('')  )   
  6. FROM tb AS a    
  7. GROUP BY id    

   第二种显示结果  
   1 aa,bb,  
   2 aaa,bbb,ccc, 

第三种  (用STUFF函数替换掉首端的逗号)

Sql代码 
  收藏代码
  1. SELECT id,   
  2.        [val]=STUFF( (SELECT ','+[value]   
  3.                      FROM tb AS b   
  4.                      WHERE b.id = a.id   
  5.                      FOR XML PATH('')) , 1 , 1 , '' )  
  6. FROM tb AS a    
  7. GROUP BY id    

   第三种显示结果  
   1 aa,bb  
   2 aaa,bbb,ccc


STUFF 函数将字符串插入另一字符串。它在第一个字符串中从开始位置删除指定长度的字符;然后将第二个字符串插入第一个字符串的开始位置。
          STUFF ( character_expression , start , length ,character_expression_insert )

第四种  (用REPLACE函数将所有空格替换成逗号)

Sql代码 
  收藏代码
  1. SELECT id,   
  2.        [val]= REPLACE( (SELECT [value] AS [data()]  
  3.                         FROM tb AS b   
  4.                         WHERE b.id = a.id   
  5.                         FOR XML PATH('')) , ' '',')  
  6. FROM tb AS a    
  7. GROUP BY id    

 结果与第三种一样,最为理想。

解析:[data()] 这里据说是起到一个类似数组的作用,具体用法还要再查。

如果外围不用REPLACE函数包住,则返回的结果是 aaa bbb ccc ,每项之间有空格,所以最后用REPLACE函数将所有空格替换成逗号。

转自:http://calhaha.iteye.com/blog/986613

相关文章
|
Python
使用`merge`函数将两个dataframe合并在一起,然后使用`query`函数根据指定的条件选取数据
在pandas中,可以使用`merge`函数将两个dataframe合并在一起,然后使用`query`函数根据指定的条件选取数据。
114 1
|
JavaScript
通过gm来批量拼接图片,两张合并一张
刚好在做类似的事情,找了一部分绘本,想将绘本内的图片全部取出来合并。 我是通过nodejs调用gm模块来实现的拼接,命令很简单。
通过gm来批量拼接图片,两张合并一张
|
5月前
|
SQL Oracle 关系型数据库
sql语句两个字段合并或者两个字段拼接显示
sql语句两个字段合并或者两个字段拼接显示
|
SQL Oracle 关系型数据库
MySQL查询后10条数据并顺序输出
MySQL查询后10条数据并顺序输出
249 0
|
SQL 数据挖掘 数据库
DataFrame多表合并拼接函数concat、merge参数详解+代码操作展示
DataFrame多表合并拼接函数concat、merge参数详解+代码操作展示
814 0
DataFrame多表合并拼接函数concat、merge参数详解+代码操作展示
|
存储 API 索引
索引合并那些事情
假期梳理了之前在新浪博客的文档,将一些有用的内容搬到这里。本文分享索引合并的经验。
239 0
|
开发者
合并结果集 | 学习笔记
快速学习合并结果集。
110 0
合并结果集 | 学习笔记
|
SQL 算法 关系型数据库
PostgreSQL 任意字段数组合 AND\OR 条件,指定返回结果条数,构造测试数据算法举例
标签 PostgreSQL , 构造测试数据 , 任意字段组合AND,OR查询 , 指定结果集大小 背景 在进行一些实际的POC测试时,需要根据业务提出的需求构造数据,比如按照任意字段数组合 AND\OR 条件,指定返回结果条数,构造测试数据。
1560 0
|
关系型数据库 Linux Shell