用于group by的tsql聚合字符串

我有两张桌子:

名称(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
您可以使用For XML作为从SQL Server 2005开始实现该功能的技巧.
Select
    A.name,stuff((
        select ',' + B.address
        from Addresses B
        WHERE A.id=B.name_id
        for xml path('')),1,'')
From Names A

如果你的地址中还没有逗号,那么效果很好,但即使这样做了,因为你的请求是在它们之间添加逗号……这可能就像’正确’一样.

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...