zoukankan      html  css  js  c++  java
  • 合并拼接查询

    示例表 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

  • 相关阅读:
    PHP+MySQL实现海量数据导入导出的总结:is_numbric函数的坑
    【PHP开发规范】继承与扩展:PSR-2 编码风格规范
    【PHP开发规范】老生常谈的编码开发规范你懂多少?
    【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序
    php数组函数array_column:不用循环就能提取多维数组内容
    php使用urlencode对中文编码而引出的问题:urlencode和rawurlencode的区别
    table-tree vs stock vs whiteboard
    PDF解析
    山灵up4
    Devops之CI/CD
  • 原文地址:https://www.cnblogs.com/WindBlog/p/2085989.html
Copyright © 2011-2022 走看看