当前位置: 首页> 游戏> 评测 > SQL:按用户名复制权限

SQL:按用户名复制权限

时间:2025/8/23 5:49:53来源:https://blog.csdn.net/wudechun/article/details/139742270 浏览次数:0次

生产系统中有一个模块是管理用户及菜单权限,它们是由3个数据表组成,关系及字段如下:

原来为每个用户添加菜单的访问权限时都是一个一个添加,但今天遇到有个新来的员工,需要具有与另一个员工相同的权限。新建一个用户后,如果还按之前的方式添加菜单的访问权限,将是很麻烦的事,于是需要设计一个权限复制的功能。

该功能在软件中设计成下面的样式:

当点击“确定”按钮时,希望能将某个用户已有的所有权限。

首先想到的步骤如下:

1、从用户表中按姓名找出要复制和被赋予权限的id; 2、从权限表中按要复制的用户的菜单id;3、将被赋予用户的id和菜单id批量写入到权限表;

但按这样来操作的话,最少都要3步,需要看看还有没有更优的方法,比如用一句SQL语句就实现。于是通过AI东拼西凑出了下面的SQL 语句:

/*使用INSERT INTO SELECT语句来将SELECT出的数据再INSERT到表中*/INSERT INTO 权限表(用户id,菜单id,禁用)
SELECT () AS 用户id,菜单id,'FALSE' AS 禁用FROM 权限表WHERE 用户id=()/*前一个()是要插入的新的用户id,那就是要被赋予权限的账号的id*/SELECT id FROM 用户表 WHERE 姓名='要被账予的用户姓名'/*后一个()是要复制的用户的id*/SELECT id FROM 用户表 WHERE 姓名='要复制的用户名'/*将3条SQL语句进行合并为1条*/INSERT INTO 权限表(用户id,菜单id,禁用)
SELECT (SELECT id FROM 用户表 WHERE 姓名='要被账予的用户姓名') AS 用户id,菜单id,'FALSE' AS 禁用FROM 权限表WHERE 用户id=(SELECT id FROM 用户表 WHERE 姓名='要复制的用户名')

这样在客户端只要将两个用户名传递并拼接到SQL语句中,通过一次执行就可以完成任务了。

以上的SQL是通过文心一言弄出来的,我问的是:

用sql实现:一个数据表中有userid、menuid,根据userid=2筛选出menuid,然后将userid=3和前面筛选出的menuid再插入到本数据表中

 然后我自己再修改了查询对应用户的id的语句。

希望上面的分享能为大家带来帮助,也希望大家能利用好AI更好的学习与作。

关键字:SQL:按用户名复制权限

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: