簡體   English   中英

如何在sql server中連接一個到多個記錄

[英]how to concatenate one to many records in sql server

我在sql server中有兩個表UserUserRoles User表具有基本用戶信息,例如UserId,Name等, UserRoles具有UserId,RoleName等列。 這兩個表之間存在一對多的關系,即一個用戶可以擁有多個角色。

用戶

UserId  Name
1       A
2       B
3       C

的UserRole

UserId  Rolename
1       Manager
1       Event Organiser
2       Supervisor
2       Employee
2       Some otherRole

我需要在sql中編寫一個查詢,它將返回如下。 即將一個到多個記錄連接成一個字符串

UserId  Roles
1       Manager,Event Organiser
2       Supervisor,Employee,Some otherRole

您必須使用以下2 SQL功能

XML路徑 - 用於連接

逗號分離的東西

select UserId,
    stuff((select ',' + t2.Rolename
     from UserRoles t2 where t1.UserId = t2.UserId
     for xml path('')),1,1,'') Roles
from UserRoles t1
group by UserId

SQL小提琴

試試這個,

Declare @t1 table(UserId int,name varchar(20))
insert into @t1 values(1,'A'),(2,'B'),(3,'C')
--select * from @t1
Declare @t table(UserId int,Rolename varchar(20))
insert into @t values(1,'Manager'),(1,'Event Organiser'),(2,'Supervisor'),(2,'Employee'),(2,'Some otherRole')

select 
userid,
stuff((select ','+ Rolename from @t b where a.UserId=b.UserId for xml path('')),1,1,'') [Roles]
 from @t1 a 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM