【问题标题】:SQL Server join results as comma separated list [duplicate]SQL Server以逗号分隔列表的形式加入结果[重复]
【发布时间】:2014-04-01 13:56:01
【问题描述】:

我有一个公司、行业和 company_industry_map 多对多表。

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

这是我正在尝试编写的一般查询:

SELECT company_id, 
       xxx AS industries 
  FROM company c, 
       company_industry_map m 
 WHERE c.company_id = m.company_id

【问题讨论】:

  • 您使用的是什么数据库? SQL 服务器、MySQL 等
  • 你可以看看这个:stackoverflow.com/questions/8700961/…
  • 具体用STUFF命令看答案(Rick S评论)得分最高的
  • 请停止使用隐式连接的 sql 反模式。它们是一种非常糟糕的技术,使得维护系统变得更加困难,并导致更危险的代码可能包含错误,例如显式语法不允许的意外交叉连接。

标签: sql sql-server join


【解决方案1】:

在 SQL Server 中,您可以创建如下函数:

declare @var nvarchar(max)

set @var = ''
select @var = @var  + ',' + UserLogin from [user] 

select @var

【讨论】:

    【解决方案2】:

    你可以在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 2011-12-25
      • 2018-10-05
      • 1970-01-01
      • 2012-02-21
      相关资源
      最近更新 更多