从表中连接行

时间:2014-11-02 09:18:50

标签: sql sql-server performance

在SQL Server中,我使用STUFF,XML功能来使用串联字符串的这一特性。在这个过程之后,我必须更新记录的最后一个元素。

我的表格如下:

id   category
-------------
1      Pop
1      Rock
2      Pop
3      Rock

相同的ID类别应附加|分隔符

Pop|Rock| as Pop|Rock

这就是我想要的方式。但是Stuff和XML正在扼杀我的表现。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

你的查询看起来像这样吗?

select id,
       stuff((select '|' + category
              from table t2
              where t2.id = t.id
              for xml path ('')
             ), 1, 1, '') as categories
from (select distinct id from table t) t;

如果您不使用此方法,SQL Server中还有其他方法,但我认为它们会有更糟糕的性能。