我有一个包含 projectID、UserID 和 RoleID 以及其他列的表。

我试图获得一个查询,该查询将根据每个项目的角色为我提供用户。

我尝试了 if 和 case 语句,但能够解决这个问题。

table :

projectid   | userid | roleid | flag
1000001     | 20001  | 1      | Y
1000001     | 20002  | 2      | Y
1000001     | 20003  | 2      | Y
1000001     | 20004  | 3      | Y
1000001     | 20005  | 1      | Y
1000002     | 20006  | 3      | Y

考虑角色 1 = 初级,2 = TL,3 = HOD,我正在尝试获得这样的东西
projectid | junior       | TL           | HOD
1000001   | 20001, 20005 | 20002, 20003 | 20004
1000002   | -------------| -------------| 20006

最佳答案

你需要使用 group_concat

select projectid,
group_concat(case when roleid = 1 then userid end) junior,
group_concat(case when roleid = 2 then userid end) senior,
group_concat(case when roleid = 3 then userid end) TL
from table1
group by projectid

fiddle

关于mysql - 查询以根据 mysql 中每个项目的角色来隔离用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23211662/

10-11 04:20