SQL Server联接结果作为逗号分隔的列表
我有一个公司、行业和公司的多对多图表SQL Server联接结果作为逗号分隔的列表,sql,sql-server,join,Sql,Sql Server,Join,我有一个公司、行业和公司的多对多图表 company_id | company_name 1 Goldman Sachs 2 Microsoft industry_id | industry 4 Technology 5 Finance 6 Banking company_id | industry_id 1 5 1 6 2
company_id | company_name
1 Goldman Sachs
2 Microsoft
industry_id | industry
4 Technology
5 Finance
6 Banking
company_id | industry_id
1 5
1 6
2 4
我想编写一个查询,将所有行业连接到一个逗号分隔的列表中,如下所示:
company_id | industries
1 Finance, Banking
2 Technology
declare @var nvarchar(max)
set @var = ''
select @var = @var + ',' + UserLogin from [user]
select @var
以下是我试图写的一般性问题:
SELECT company_id,
xxx AS industries
FROM company c,
company_industry_map m
WHERE c.company_id = m.company_id
在SQL Server中,您可以创建如下函数:
company_id | industries
1 Finance, Banking
2 Technology
declare @var nvarchar(max)
set @var = ''
select @var = @var + ',' + UserLogin from [user]
select @var
您可以在SQL Server中使用类似的内容
select co.CompanyID, AllIndustries =
(select (cast(industry as varchar(200))+',') as [text()]
FROM company c,
company_industry_map m
WHERE c.company_id = m.company_id and c.company_id = co.company_id
order by industry_id for XML PATH(''))
from Companies co
你在使用什么数据库?SQL server、MySQL等等你可以看看这个:特别是使用STUFF命令查看得分最高的答案(Rick的评论)请停止使用隐式连接的SQL反模式。它们是一种非常糟糕的技术,使得维护系统变得更加困难,并导致更高风险的代码可能包含错误,例如显式语法不允许的accidnetal交叉联接。