SQL Server:连接和追加列

时间:2012-09-27 15:02:03

标签: sql sql-server database sql-server-2008 tsql

我有一个SQL问题,希望有人可以帮助我或给我一些指示。非常感谢。

我有两张桌子:A和B.

  • A列ID是主键字段,NAME
  • B列DUPIDNAMEID是主键

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}}

1 个答案:

答案 0 :(得分:4)

MySQL不同,SQL Server没有内置函数来执行此操作。但您仍然可以使用CROSS APPLYFOR 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) 

SQLFiddle Demo