--权限表有四条记录
tb_purview
id title addtime
1 添加新闻 2009-05-20
2 添加公告 2009-05-21
3 审核新闻 2009-05-22
4 审核会员 2009-05-23
--角色表有两条记录
tb_role
id title detail addtime
1 录入员 1,2 2009-05-22
2 审核员 3,4 2009-05-23
现在我要查出审核人员都有什么权限
select title from tb_purview where id in (select id from tb_role where id=2);
这样的语名只能读出
3 审核新闻 2009-05-22
它应该读出下面那两条才对的。谁能看看。给我正确做法。
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
提问下数据库mysql的一个问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- iteye_14985 2009-05-23 14:48关注
首先把detail的属性改成这样:
tb_role
id title detail addtime
1 录入员 1,2, 2009-05-22
2 审核员 3,4, 2009-05-23然后SQL这样写:
SELECT tb_purview.title FROM tb_role, tb_purview WHERE tb_role.id=2 AND POSITION(CONCAT(tb_purview.id,',') in detail)
如果你的权限数量只有1-9等,不同是存在1,11,2,22这样的id, 则原来的tb_role表detail字段可以不加逗号,SQL可以化简成:
SELECT tb_purview.title FROM tb_role, tb_purview WHERE tb_role.id=2 AND POSITION (tb_purview.id in detail)
另外,建议把detail分拆成第三个表,可能会好用些。如
tb_role
id title addtime
1 录入员 2009-05-22
2 审核员 2009-05-23tb_role_purview
id roleid detail
1 1 1
2 1 2
3 2 3
4 2 4本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 centos7.9升级python3.0的问题
- ¥15 如何解决调试dev-出++5.11不成功问题
- ¥15 安装CentOS6时卡住
- ¥20 关于#监控系统#的问题,如何解决?(相关搜索:系统软件)
- ¥20 c语言写的8051单片机存储器mt29的模块程序
- ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
- ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
- ¥50 rk3588板端推理
- ¥250 opencv怎么去掉 数字0中间的斜杠。
- ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?