SQL:按用户名复制权限

news2024/10/6 10:40:12

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1832955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL Server 中处理重复数据:保留最新记录的两种方案

目录 首先准备测试的数据表 方案一. 使用ROW_NUMBER()函数删除重复项 方案二. 使用临时表的方式 大家在项目开发过程中,数据库几乎是每一个后端开发者必备的技能,并且经常会遇到对于数据表重复数据的处理,一般需要去除重复保留最新的记录。今天这里给大家分享两种种方案,…

【Git】-- 添加公钥到 github 或者gitlab上

仅针对系统:mac os 、 unix、linux 1、检查是否有 id_rsa.pub $ cd ~ $ ls -al ~/.ssh 注意:若已有 id_rsa.pub,则必要执行 第二步,避免覆盖掉原有正常的公钥。 配置多个 git 账号请参考:同一台电脑配置多个git账…

Python工具箱系列(五十三)

​​水印 水印是一种常见的图片处理需求。当既需要展示,又需要保护知识产权时,就需要使用文字或者图片来打水印。下面的代码展示了文字水印与图片水印的过程。 ​--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown from pat…

电源小白入门学习11——反激电源电路原理

电源小白入门学习11——反激电源、正激电源 隔离电源变压器介绍反激电源 前面我们学习了BUCK、BOOST、BUCK-BOOST 等各种各样的DCDC变换器,但是他们都有一共同的特点,即能量的传输路径时一个完整的通路,输入与输出之间不存在电气隔离&#xf…

C++链表相关内容温习回顾——移除链表元素

本文主要对之前学过的C链表相关内容进行温习回顾,并以 移除链表元素 为例,进行应用。 关于链表的基础理论可见:链表理论基础 应用示例:LeetCode 203 移除链表元素 https://leetcode.cn/problems/remove-linked-list-elements/ 0、…

Redis作者长文总结LLMs, 能够取代99%的程序员

引言 这篇文章并不是对大型语言模型(LLMs)的全面回顾。很明显,2023年对人工智能而言是特别的一年,但再次强调这一点似乎毫无意义。相反,这篇文章旨在作为一个程序员个人的见证。自从ChatGPT问世,以及后来使…

定个小目标之刷LeetCode热题(22)

这道题最容易想的就是排序后再遍历,但是时间复杂度就不是O(n)了,所以还是得用更优的解法,直接看题解,它是使用了HashSet,遍历数组,对于每一个数x,如果不存在x - 1则进入内循环,否则跳…

springboot弘德图书馆座位预约管理系统-计算机毕业设计源码07028

摘 要 在面对当今培育人才计划的压力,人们需要汲取更多的不同领域的知识来不断扩充自己的知识层面,因此他们对学习的欲望不断扩大,图书馆作为我们的学习宝地,有着不可替代的地位。但是在信息化时代,传统模式下的图书馆…

四川蔚澜时代电子商务有限公司抖音开店靠谱吗?

在数字化浪潮席卷全球的今天,电子商务以其独特的魅力和优势,成为了推动经济发展的重要引擎。作为四川地区电商服务的佼佼者,四川蔚澜时代电子商务有限公司凭借其深厚的行业积淀和前瞻的战略眼光,专注于抖音电商服务领域&#xff0…

pytest并发执行时token异常处理问题

接前面加入钩子函数处理token复用的问题,只保证了用例的串联执行,我的部分测试用例中接入了通义千问的部分接口生成测试数据,七八个场景跑完差不多快要10分钟。考虑使用并发执行。 http://t.csdnimg.cn/ACexL 使用多线程和不使用耗时差距很大…

Node-red win11安装

文章目录 前言一、安装node.js和npm二、安装Node-red三、 运行Node-red 前言 Node-RED 是一种编程工具,用于以新颖有趣的方式将硬件设备、API 和在线服务连接在一起。 它提供了一个基于浏览器的编辑器,只需单击一下即可将调色板中的各种节点轻松连接在…

EXCEL数据导入HIVE

引言 本文将论述如何将Windows本地的excel表数据,导入到虚拟机Linux系统中的Hadoop生态中的Hive数据仓库中。 实验准备 DBeaver Hive3.1(Hadoop3.1) excel数据表 实验步骤 一、首先打开虚拟机,启动Hadoop,启动hive,启动hiveserver2,连接DBeaver,成功连接展示如下…

VS2022打开.netcore2.2 问题解决

1.vs2022运行时一直提示异常 2.解决方法,双击当前的项目修改xxxx.csproj文件 把当前的版本修改为2.2.0即可重新编译运行

便携式手持气象仪:低功耗设计

TH-LSZ05便携式手持气象仪是一款轻便、操作简便的气象监测工具,集成了风向、风速、大气压、温度、湿度五项气象要素的测量功能。这些设备通常设计为体积小、重量轻,以便于用户随时携带并使用。通过使用手持气象仪,用户可以实时获取关键的气象…

MYSQL 三、mysql基础知识 7(MySQL8其它新特性)

一、mysql8新特性概述 MySQL从5.7版本直接跳跃发布了8.0版本 ,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上 做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度…

【QT5】<重点> QT网络编程

文章目录 前言 一、QT中的TCP编程 1. TCP简介 2. 服务端程序编写 3. 客户端程序编写 4. 服务端与客户端测试 二、QT中的UDP编程 1. UDP简介 2. UDP单播与广播程序 前言 本篇记录QT中TCP和UDP网络编程知识。 一、QT中的TCP编程 1. TCP简介 TCP是面向连接的、可靠的、…

关于事务流的思考

关于事务流的思考 1 事务流业务分析 ​ 不同业务可能有不同的审核流程,而activiti为大家提供了一套公用的审核功能,基于这些功能我们可以根据自己的业务需求组合出我们自己的审核流程,而这里我要实现的事务流有如下功能:角色为结…

MySQL 数据库 Navicat Premium 16.01 安装教程

MySQL 数据库 Navicat Premium 16.01 安装教程 目录 MySQL 数据库 Navicat Premium 16.01 安装教程前言安装步骤同意协议选择安装目录桌面快捷方式安装正在安装安装完成 步骤获取 前言 MySQL数据库管理用Navicat更加方便,可视化效果更好,今天给大家带来…

八股文之JVM

目录 1.JVM内存划分 2.JVM类加载过程 3.JVM垃圾回收机制GC 3.1.判断谁是垃圾 3.2.如何释放对应的内存 1.JVM内存划分 在一个Java程序运行起来之后,jvm就会从操作系统中申请一块内存,然后就会将该内存划分成多个部分,用于不同的用途。 …

python-03

使用File操作文件 open(file, moder, buffering-1,encodingNone, errorsNone, newlineNone, closefdTrue, openerNone) file:要打开的文件 mode:文件打开模式。默认访问模式是读(r) buffering:缓冲区大小 encodin…