SQL中将某个表中的多行数据在一个字段显示

Posted skye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中将某个表中的多行数据在一个字段显示相关的知识,希望对你有一定的参考价值。

项目需求:将某个表中的多行数据在一个字段显示,如下:

比如表A中有字段 ID,NAME,

表B中有字段ID,PID,DES,

表A,表B中的数据分别如下:

ID NAME
1 张三
2 李四

ID PID DES
1 1 语文
2 1 数学
3 1 外语
4 2 历史
5 2 地理

最终我想显示的效果为:

ID NAME KC
1 张三 语文,数学,外语
2 李四 历史,地理

方法:使用sql中的STUFF函数与for xml path

 1.for xml path是将将查询结果集以XML形式展现

比如对于表B,select * from b for xml path(‘‘)

得到的结果集如下:

技术分享图片
<ID>1</ID>
<PID>1</PID>
<DES>语文</DES>
<ID>2</ID>
<PID>1</PID>
<DES>数学</DES>
<ID>3</ID>
<PID>1</PID>
<DES>外语</DES>
<ID>4</ID>
<PID>2</PID>
<DES>历史</DES>
<ID>5</ID>
<PID>2</PID>
<DES>地理</DES>
View Code

这里数据集不是作为多行数据展示

2.stuff函数的用法为:stuff(param1, startIndex, length, param2)
说明:将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后用param2替换删掉的字符。

因此,将多行数据转换为一行的格式写法为:

select ID as ID,Name as NAME,
(select stuff((select ‘,‘+DES from b where b.PID=a.ID for xml path(‘‘)),1,1,‘‘)) as KC
from a 










以上是关于SQL中将某个表中的多行数据在一个字段显示的主要内容,如果未能解决你的问题,请参考以下文章

sql server中将一个字段根据某个字符拆分成多个字段显示

在 SQL Server 中将数据从一列拆分为多行

如何在 SQL 中将带有其他字段的 XML 解析为多行?

MYSQL怎么将表中的A字段值更新B字段值?求sql语句

更新SQL某个表中的时间字段中的一部分数据整体增加小时数

从文本框表单中将多行插入到单个表中 - Access 2010