来自中油瑞飞的SQL笔试题20131202
1、有三张表,用户表,用户角色表,角色表,使用sql显示如下内容:
用户ID,用户名,超级管理员,录入员,会计
也就是角色用逗号分隔。
解:
1、填充数据到表User
select * from [User]
INSERT INTO [northwind].[dbo].[User]
([ID]
,[NAME])
VALUES
(1
,'zhaohy')
INSERT INTO [northwind].[dbo].[User]
([ID]
,[NAME])
VALUES
(2
,'zhangyy')
GO
2、填充数据到表role
select * from [role]
INSERT INTO [northwind].[dbo].[Role]
([ID]
,[RoleName])
VALUES
(1
,'senior software engineer')
INSERT INTO [northwind].[dbo].[Role]
([ID]
,[RoleName])
VALUES
(2
,'project manager')
INSERT INTO [northwind].[dbo].[Role]
([ID]
,[RoleName])
VALUES
(3
,'UI Disigner')
INSERT INTO [northwind].[dbo].[Role]
([ID]
,[RoleName])
VALUES
(4
,'Tester')
GO
3、填充数据到表Role_User
select * from Role_User
INSERT INTO [northwind].[dbo].[Role_User]
([RoleID]
,[UserID])
VALUES
(1
,1)
GO
INSERT INTO [northwind].[dbo].[Role_User]
([RoleID]
,[UserID])
VALUES
(2
,1)
INSERT INTO [northwind].[dbo].[Role_User]
([RoleID]
,[UserID])
VALUES
(3
,1)
INSERT INTO [northwind].[dbo].[Role_User]
([RoleID]
,[UserID])
VALUES
(4
,2)
4、查询出来:
drop table #result;
select * into #result from (select u.ID,u.NAME,ru.RoleID,r.RoleName from [user] u inner join Role_User ru on ru.UserID =u.ID inner join [Role] r
on ru.RoleID=r.ID) as t;
select * from #result;
select id,name, [RoleName] = stuff((select ',' + [RoleName] from #result t where id = #result.id for xml path('')) , 1 , 1 , '')
from #result
group by id ,name;
drop table #result;
输出结果:
- 06-16卡巴斯基郑启良:支持信创发展是卡巴斯基的重要使命
- 06-16访问管理是确保现代工作场所安全的的五个关键原因
- 06-16零信任安全的演变:彻底改变网络安全策略
- 06-16GitHub上值得关注的20个网络安全项目
- 06-16英国曼彻斯特大学遭遇网络攻击,机密数据或遭窃!
- 06-16调查表明广告软件推送恶意软件感染了六万多个安卓应用程序
- 06-16微软向美国政府提供GPT的大模型,安全性如何保证?
- 06-16如何保护OT环境免受安全威胁?
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 05-15奇安信:数据安全问题是医疗卫生行业数字化
- 05-15腾讯宣布混元文生图大模型开源
- 05-15网易云音乐与韩国知名娱乐公司Kakao达成战略
- 05-15阿联酋宣告正式开启“5G-A全国商用”计划,
- 05-15二十年未遇的强烈地磁暴来袭