使用场景:在已登录的操作人员中已经拥有了组权限,要求再给登录的操作人员添加人员权限。
原SQL查询为:SELECT ROLEID FROM OPER_TEAMPRIVILEGE WHERE ID IN(ID_1,ID_2,...ID_n);
修改后SQL查询:Select Distinct * From(select roleid from OPER_TEAMPRIVILEGE t Where Id In ('ID_1,ID_2,...ID_n') Union Select roleid From oper_operatorrole t Where operatorid=' 人员ID');
表格构如下:
组权限表结构 OPER_TEAMPRIVILEGE:
|
表格名称 |
操作员组权限表(OPER_TEAMPRIVILEGE) | ||||||||
|
字段名 |
中文名称 |
数据类型 |
长度 |
允许为空 |
缺省值 |
主键 |
外键 |
索引 |
备注 |
|
ID |
组唯一代号 |
Varchar2 |
20 |
否 |
|
是 |
是 |
|
OPER_OPERATORTEAM |
|
ROLEID |
权限编号 |
Varchar2 |
10 |
否 |
|
是 |
是 |
|
OPER_ROLE |
人员权限结构 OPER_OPERATORROLE:
|
表格名称 |
操作员人员权限表(OPER_OPERATORROLE) | ||||||||
|
字段名 |
中文名称 |
数据类型 |
长度 |
允许为空 |
缺省值 |
主键 |
外键 |
索引 |
备注 |
|
OPERATORID |
人员唯一代号 |
Varchar2 |
20 |
否 |
|
是 |
是 |
|
OPER_TEAMMEMBER |
|
ROLEID |
权限编号 |
Varchar2 |
10 |
否 |
|
是 |
是 |
|
OPER_ROLE |
[备注:]在查询中UNION 最后的返回结果集是去掉了所有的重复记录,而不区分是哪个表里的记录的,而 UNION ALL 会返回合并后的全部结果集,所以修改后的SQL使用Distinct关键字多余的。
今天犯的一个小错误!呵呵~~
本文介绍了一种SQL查询优化方案,用于合并操作员的组权限和个人权限查询,通过使用UNION来去除重复记录,并讨论了使用DISTINCT关键字的问题。
5040

被折叠的 条评论
为什么被折叠?



