我有一个SQL问题,希望有人可以帮助我或给我一些指示。非常感谢。
我有两张桌子:A和B.
ID
是主键字段,NAME
DUPID
,NAME
和ID
是主键 A和B之间的关系在B中,DUPID
包含A.ID
的某些值,请求是将B.NAME
值附加到A.NAME
,由A.ID = B.DUPID
分隔基于联接A B
ID NAME DUPID NAME
1 null 1 John
2 null 1 John
3 null 1 Mark
4 null 3 Luke
5 null 3 Luke
3 Luke
3 Matthew
..
也许我的解释不明确,这是一个简单的例子。
A
ID NAME
1 John;Mark
2 null
3 Luke;Matthew
4 null
5 null
所以最终,我需要更新表A,并使它看起来像下面
{{1}}
答案 0 :(得分:4)
与MySQL
不同,SQL Server
没有内置函数来执行此操作。但您仍然可以使用CROSS APPLY
和FOR XML PATH('')
SELECT a.ID,
SUBSTRING(d.NameList,1, LEN(d.NameList) - 1) Names
FROM a
CROSS APPLY
(
SELECT DISTINCT [NAME] + '; '
FROM B
WHERE A.ID = B.DupID
FOR XML PATH('')
) D (NameList)