SQL:按用户名复制权限

生产系统中有一个模块是管理用户及菜单权限,它们是由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更好的学习与作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍德春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值