当前位置:Gxlcms > mysql > sql里将重复行数据合并为一行数据使用逗号进行分隔

sql里将重复行数据合并为一行数据使用逗号进行分隔

时间:2021-07-01 10:21:17 帮助过:30人阅读

sql里将重复行数据合并为一行,将多行fieldname字段的内容串联起来,用逗号分隔,接下来为大家介绍下详细的实现sql语句,希望对你有所帮助

一.定义表变量
代码如下:
  1. <br>DECLARE @T1 table <br>( <br>UserID int , <br>UserName nvarchar(50), <br>CityName nvarchar(50) <br>); <br> <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>insert into @T1 (UserID,UserName,CityName) values (1,'a','上海') <br>insert into @T1 (UserID,UserName,CityName) values (2,'b','北京') <br>insert into @T1 (UserID,UserName,CityName) values (3,'c','上海') <br>insert into @T1 (UserID,UserName,CityName) values (4,'d','北京') <br>insert into @T1 (UserID,UserName,CityName) values (5,'e','上海') <br> <br> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>select * from @T1 <br>-----最优的方式 <br>SELECT CityName,STUFF((SELECT ',' + UserName FROM @T1 subTitle WHERE CityName=A.CityName FOR XML PATH('')),1, 1, '') AS A <br>FROM @T1 A <br>GROUP BY CityName <br>----第二种方式 <br>SELECT B.CityName,LEFT(UserList,LEN(UserList)-1) <br>FROM ( <br>SELECT CityName,(SELECT UserName+',' FROM @T1 WHERE CityName=A.CityName FOR XML PATH('')) AS UserList <br>FROM @T1 A <br>GROUP BY CityName <br>) B <br>stuff(select ',' + fieldname from tablename for xml path('')),1,1,'') <br> <br>这一整句的作用是将多行fieldname字段的内容串联起来,用逗号分隔。 <br>for xml path是SQL Server 2005以后版本支持的一种生成XML的方式。 <br>stuff函数的作用是去掉字符串最前面的逗号分隔符。 <br>效果图: </li></ol></pre></li></ol></pre>

人气教程排行