Sql 使用XML路径连接多个字段
我在实现连接多行的XML路径方法时遇到了一些问题。因此,给出下表,测试Sql 使用XML路径连接多个字段,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我在实现连接多行的XML路径方法时遇到了一些问题。因此,给出下表,测试 ID Type 1 boy 2 boy 3 boy 1 girl 2 girl 3 man 3 woman 查询是: SELECT DISTINCT a.ID, ( SELECT b.Type + ',' FROM Test as b WHERE a.Type = b.Type for XML PATH ('')
ID Type
1 boy
2 boy
3 boy
1 girl
2 girl
3 man
3 woman
查询是:
SELECT DISTINCT a.ID,
(
SELECT b.Type + ','
FROM Test as b
WHERE a.Type = b.Type
for XML PATH ('')
)
FROM Test as a
但不是返回:
ID Type
1 boy,girl,man,
2 boy,girl,
3 boy,girl,woman
而是返回以下内容:
ID Type
1 boy,boy,boy,
1 girl,girl,
2 boy,boy,boy,
2 girl,girl,
3 boy,boy,boy,
3 man,
3 woman,
发生了什么事?你加入的场地不对 试一试
与其使用DISTINCT,不如使用
groupby
类似的方法
SELECT a.ID,
STUFF((SELECT ', ' + [Type] [text()]
FROM Test
WHERE ID = a.[ID]
for XML PATH (''),TYPE).
value('.','NVARCHAR(MAX)'),1,2,'') AS [Type]
FROM Test as a
GROUP BY a.ID
真的!谢谢。@lunarplasma是的,当然使用group by而不是DISTINCT可以提供更好的性能。
SELECT a.ID,
STUFF((SELECT ', ' + [Type] [text()]
FROM Test
WHERE ID = a.[ID]
for XML PATH (''),TYPE).
value('.','NVARCHAR(MAX)'),1,2,'') AS [Type]
FROM Test as a
GROUP BY a.ID