Sql Serrver 查询问题

午夜小野猫 2016-10-28 09:50:06
我有两个表MenuInfo,和RoleMenuInfo表

menuInfo表
ID int
MenuID nvarchar(20)
MenuName nvarchar(50)
等字段
.
.
RoleMenuInfo表
ID int
MenuID nvarchar(200)
RoleID nvarchar(20)

RoleMenuInfo表中的MenuID字段是用逗号分隔开来的多个MenuID怎么写查询语句呢?将一个RoleID所对应的所有MenuName查询出来?
...全文
405 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AAACCCEEEFFFA 2016-10-29
  • 打赏
  • 举报
回复
SELECT MenuName FROM menuInfo a 
                                   WHERE a.RoleID=1 AND exists(SELECT 1 FROM RoleMenuInfo WHERE a.RoleID=RoleID AND CHARINDEX(','+a.MenuID+',',','+MenuID+',')>0)
你的RoleMenuInfo表 字段MenuID nvarchar(200) 长度这么段,放不了多少个把。 如果不重名,在DISTINCT 下
午夜小野猫 2016-10-29
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
名称是以列表形式展示出来,还是 以逗号分割开来?
逗号
Neo_whl 2016-10-28
  • 打赏
  • 举报
回复

--少个and
--try this
select MenuName from menuInfo a 
                                   where exists(select 1 from RoleMenuInfo where a.id=id and charindex(a.MenuID,MenuID)>0)
中国风 2016-10-28
  • 打赏
  • 举报
回复
SELECT 
*
,STUFF((SELECT ','+MenuName FROM menuInfo WHERE ','+a.MenuID+',' LIKE '%,'+MenuID+',%'),1,1,'') AS MenuName
FROM RoleMenuInfo AS a 
Neo_whl 2016-10-28
  • 打赏
  • 举报
回复

--try this
select MenuName from menuInfo a 
                                   where exists(select 1 from RoleMenuInfo where a.id=id charindex(a.MenuID,MenuID)>0)
卖水果的net 版主 2016-10-28
  • 打赏
  • 举报
回复
名称是以列表形式展示出来,还是 以逗号分割开来?

34,594

社区成员

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

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