1

我有两张桌子:

名称(id,名称) 地址(id,name_id,地址)

我想写返回给我的查询:姓名,地址列表(地址1,地址2,地址3,..)

就像是:

Select A.name, B.list_of_addresses
From Names A
    Inner Join (Select name_id, /*list_of_addresses with comma between them*/
                From Addresses
                Group By name_id)  B ON A.id=B.name_id
4

1 回答 1

6

从 SQL Server 2005 开始,您可以使用 For XML 作为一种技巧来实现这一目标。

Select
    A.name,
    stuff((
        select ',' + B.address
        from Addresses B
        WHERE A.id=B.name_id
        for xml path('')),1,1,'')
From Names A

如果您的地址中还没有逗号,它会很好地工作,但即使有,因为您的要求是在它们之间放置逗号。这可能是“正确的”。

于 2011-01-24T21:46:07.343 回答