我有两张桌子:
名称(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
答案 0 :(得分:6)
您可以使用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,1,'')
From Names A
如果你的地址中还没有逗号,那么效果很好,但即使这样做了,因为你的请求是在它们之间添加逗号......这可能就像'正确'一样。