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交叉联接。