4
我目前正试图模拟MySQL中的group_concat
函数转换为MSSQL。我遵循here和here中的代码格式。问题是,当我尝试执行查询时,我收到了我的列RoleID
的消息Ambiguous column name
。这里是我的查询:模拟MSSQL中的group_concat,模糊的列名?
select UserName, RoleID from tb_UserInRoles
cross apply(
select RoleName from tb_Roles
where tb_UserInRoles.RoleID = tb_Roles.RoleID
for XML Path('')
) fxMerge (RoleID) group by UserName, RoleID
我想知道为什么这个特殊的代码格式呈现Ambiguous column name
错误消息。我需要使这个查询工作并理解它。先谢谢您的帮助。
我计划在许多一对多的关系表使用此方法,其中一个系统的用户可以拥有多个角色,就像这样:
| User | Role |
|--------|---------|
| JamesP | Maker |
| JamesP | Approver|
| JamesP | Admin |
我想要的结果的查询是这样的:
| User | Role |
|--------|--------------------------|
| JamesP | Maker, Approver, Admin |
不起作用。结果仅为我的用户显示一个角色。 – JamesP
@JamesP检查我更新的答案。它会解决你的问题。我加入了'USERNAME'列,因为我不知道表结构。所以你必须加入'USERID'列。在查询中的更改是WHERE'UIR.UserId = UIR1.UserId'而不是'UIR.UserName = UIR1.UserName' –
它现在工作出色:)如果你不介意,我想知道哪些在做什么代码,比如,为什么使用MAX和STUFF,为什么要使用INNER JOIN等。 – JamesP