文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【学习笔记】SQL语句处理分组合并

【学习笔记】SQL语句处理分组合并

时间:2011-02-17  来源:天行健 自强不息

表结构 

   id      name
    1       罗涛
    1       涛帅帅
    2       刘亮
    2       亮哥
    2       亮傻

 

    要得出结果

    id         name
    1       罗涛,涛帅帅
    2       刘亮,亮哥,亮傻

 

 

这是一个典型的分组合并的需求,一般有两种方法,一是写一个函数处理,二是用xml for path方法,代码如下:

 1 --建立测试环境
 2 Create table BWTEST
 3 (
 4     id Int,
 5     name Varchar(10)
 6 )
 7 GO
 8 --插入数据
 9 Insert BWTEST Values(1,'罗涛')    
10 Insert BWTEST Values(1,'涛帅帅')
11 Insert BWTEST Values(2,'刘亮')
12 Insert BWTEST Values(2,'亮哥')
13 Insert BWTEST Values(2,'亮傻')
14 GO
15 
16 --方法一:函数法
17 --创建函数
18 Create Function Getb(@id Int)
19 RETURNS Varchar(8000)
20 AS
21     BEGIN
22         DECLARE @s Varchar(8000)
23         SET @s= ''
24         SELECT @s=@s+','+name FROM BWTEST WHERE id=@id ;
25         RETURN @s
26     END
27 GO
28 
29 --调用
30 Select id, Substring(dbo.Getb(id),2,LEN(dbo.Getb(id))-1) as name from BWTEST Group By id;
31 
32 
33 --方法二:利用XML path法
34 SELECT id,STUFF((SELECT ','+name FROM BWTEST WHERE id=BW.id FOR xml path('')),1,1,'') AS name FROM BWTEST BW GROUP BY id
35 
36 
37 --删除测试环境
38 Drop Function Getb
39 Drop table BWTEST
40 --结果
41 /*
42 id          name
43 ----------- --------
44 1           罗涛,涛帅帅
45 2           刘亮,亮哥,亮傻
46 */ 


扩展学习:

利用XML FOR PATH 合并分组信息

sql STUFF用法 SQL截取字符串
相关阅读 更多 +
排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载