求教一个sql语句

hebeijg 2010-09-06 10:44:58
现在有两个表,
Table1
UserId,userName

Table2
UserId RoleId

一个UserId对应多个RoleId,
我想一次把用户的名字和权限都取出来

select Table1.*,RoleIds from Table1 where Table1.UserId= Table2.UserId
这里的RoleIds是一个字符串,
我可以通过存储过程来实现,也可以写一个函数
select Table1.* ,functionName(UserId) as RoleIds 这样来获取,但是我想问下还有简单的办法,
谢谢

...全文
189 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mayala520yy 2010-09-06
  • 打赏
  • 举报
回复
学习了。。。。
hao1hao2hao3 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hebeijg 的回复:]
引用 2 楼 yhb417 的回复:

05 版本以上可以用 XML
SQL code

select Table1.*
,stuff((select ','+RoleId from Table2 where Table2.UserId=Table1.UserId for xml path('')),1,1,'') RoleIds
from Table1

帅哥,按照你的方法必须……
[/Quote]

转换一下就可以了,
cast(roleId as nvarchar(30)) as roleid
hebeijg 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yhb417 的回复:]

05 版本以上可以用 XML
SQL code

select Table1.*
,stuff((select ','+RoleId from Table2 where Table2.UserId=Table1.UserId for xml path('')),1,1,'') RoleIds
from Table1
[/Quote]
帅哥,按照你的方法必须保证关联表Table2里的roleId是nvarchar类型的,而现实中,这个类型肯定是int类型的。
还有其他办法吗 谢谢
修改一下昵称 2010-09-06
  • 打赏
  • 举报
回复
05 版本以上可以用 XML

select Table1.*
,stuff((select ','+RoleId from Table2 where Table2.UserId=Table1.UserId for xml path('')),1,1,'') RoleIds
from Table1
喜-喜 2010-09-06
  • 打赏
  • 举报
回复
这个方法貌似已经很简单了
hebeijg 2010-09-06
  • 打赏
  • 举报
回复
thank you

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧