FIND_IN_SET的使用:mysql表数据多角色、多用户查询
MySQL 函数 FIND_IN_SET 是用于在逗号分隔的字符串中查找特定值的函数。它的语法如下:
FIND_IN_SET(search_value, comma_separated_string)
search_value 是要查找的值。
comma_separated_string 是逗号分隔的字符串,在这个字符串中查找指定的值。
FIND_IN_SET 函数会返回一个整数值,表示搜索值在逗号分隔的字符串中的位置。如果找到了,则返回该值在字符串中的位置(从 1 开始计数),如果未找到,则返回 0。
下面是一个示例代码,展示如何使用 FIND_IN_SET 函数:
-- 假设有一个表名为 users,包含 id 和 name 两列
SELECT id, name
FROM users
WHERE FIND_IN_SET('John', name) > 0;
上述示例中,我们使用了 FIND_IN_SET 函数在 name 列的逗号分隔的字符串中查找值为 ‘John’ 的记录。如果找到了,则返回对应的 id 和 name 值。
需要注意的是,FIND_IN_SET 函数适用于逗号分隔的字符串,通常用于存储一对多关系的数据。然而,使用逗号分隔的字符串来存储数据并不是一个良好的数据库设计实践,它可能会导致查询和更新操作的性能问题。如果可能的话,应该考虑使用关联表来表示一对多的关系。
当使用字符串分割的方式存储角色ID和用户ID列表时,可以通过SQL的字符串函数来处理查询条件。下面是一个示例的SQL查询语句和MyBatis Plus的示例代码:
SQL查询语句示例:
SELECT * FROM 节点表
WHERE FIND_IN_SET('角色ID', role_ids) > 0
AND FIND_IN_SET('用户ID', user_ids) > 0;
上述查询语句中,使用了MySQL的内置函数FIND_IN_SET()来判断指定的角色ID和用户ID是否存在于对应的列表中。
MyBatis Plus示例代码:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;// 假设 NodeMapper 是节点表的 Mapper 接口
// Node 是节点表对应的实体类public class NodeServiceImpl extends ServiceImpl<NodeMapper, Node> implements NodeService {// 根据角色ID和用户ID查询节点列表public List<Node> getNodesByRoleAndUser(String roleId, String userId) {QueryWrapper<Node> queryWrapper = new QueryWrapper<>();queryWrapper.apply("FIND_IN_SET({0}, role_ids) > 0", roleId).apply("FIND_IN_SET({0}, user_ids) > 0", userId);return baseMapper.selectList(queryWrapper);}
}
在上述示例代码中,使用了MyBatis Plus的QueryWrapper来构建动态查询条件,通过apply()方法将字符串函数作为查询条件应用到查询语句中。
请注意,使用字符串分割存储角色ID和用户ID列表的方式可能会导致一些性能问题,尤其是在数据量较大的情况下。考虑到查询和更新的复杂性,拆分为多张表可能会更加清晰和高效。但如果你仍然希望使用单张表的设计,请在实际使用中进行性能测试和优化。
相关文章:
FIND_IN_SET的使用:mysql表数据多角色、多用户查询
MySQL 函数 FIND_IN_SET 是用于在逗号分隔的字符串中查找特定值的函数。它的语法如下: FIND_IN_SET(search_value, comma_separated_string)search_value 是要查找的值。 comma_separated_string 是逗号分隔的字符串,在这个字符串中查找指定的值。FIND_…...
JVM篇----第十一篇
系列文章目录 文章目录 系列文章目录前言一、在新生代-复制算法二、在老年代-标记整理算法三、分区收集算法四、GC 垃圾收集器前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你…...
鸿蒙HarmonyOS获取GPS精确位置信息
参考官方文档 #1.初始化时获取经纬度信息 aboutToAppear() {this.getLocation() } async getLocation () {try {const result await geoLocationManager.getCurrentLocation()AlertDialog.show({message: JSON.stringify(result)})}catch (error) {AlertDialog.show({message…...
java正则校验,手机号,邮箱,日期格式,时间格式,数字金额两位小数
java正则校验,手机号,邮箱,日期格式,时间格式,数字金额两位小数 3.58是否为金额:true 3.582是否为金额:false 1284789qq.com是否为email:true 1284789qq.com是否为email࿱…...
php下curl发送cookie
目录 一:使用 CURLOPT_COOKIE 选项 二:CURLOPT_COOKIEFILE 三:CURLOPT_HTTPHEADER php curl发送cookie的几种方式,下面来介绍下 一:使用 CURLOPT_COOKIE 选项 通过设置 CURLOPT_COOKIE 选项,你可以将 cookie 字符…...
stable diffusion学习笔记——文生图(一)
模型设置 基本模型 基本模型也就是常说的checkpoint(大模型),基本模型决定了生成图片的主体风格。 如上图所示,基本模型的后缀为.safetensors。需要存放在特定的文件夹下。 如果用的是启动器,可以在启动器内直接下载。…...
Linux下安装openresty
Linux下安装openresty 十一、Linux下安装openresty11.1.概述11.2.下载OpenResty并安装相关依赖:11.3.使用wget下载:11.4.解压缩:11.5.进入OpenResty目录:11.6.编译和安装11.7.进入OpenResty的目录,找到nginx:11.8.在conf目录下的nginx.conf添…...
【IM】如何保证消息可用性(一)
目录 1. 基本概念1.1 长连接 和 短连接1.2 PUSH模式和PULL模式 2. 背景介绍2.1 理解端到端的思想 3. 方案选型3.1 技术挑战3.2 技术目标 1. 基本概念 在讲解消息可用性之前,需要理解几个通信领域的基本概念。 1.1 长连接 和 短连接 什么是长连接,短连接…...
js直接下载附件和通过blob数据类型下载文件
js下载文件方式有使用a标签的,也有直接用window.open的,还有用form表单的;这里采用的是a标签的下载方式,一种是url直接下载,另一种是文件的blob数据类型进行下载。 文件blob数据类型的获取一般是后端返回文件的二进制流…...
第2章-神经网络的数学基础——python深度学习
第2章 神经网络的数学基础 2.1 初识神经网络 我们来看一个具体的神经网络示例,使用 Python 的 Keras 库 来学习手写数字分类。 我们这里要解决的问题是, 将手写数字的灰度图像(28 像素28 像素)划分到 10 个类别 中(0…...
【Docker】Docker学习⑧ - Docker仓库之分布式Harbor
【Docker】Docker学习⑧ - Docker仓库之分布式Harbor 一、Docker简介二、Docker安装及基础命令介绍三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理六、网络部分七、Docker仓库之单机Dokcer Registry八、 Docker仓库之分布式Harbor1 Harbor功能官方介绍2 安装Harbor…...
一行命令在 wsl-ubuntu 中使用 Docker 启动 Windows
在 wsl-ubuntu 中使用 Docker 启动 Windows 0. 背景1. 验证我的系统是否支持 KVM?2. 使用 Docker 启动 Windows3. 访问 Docker 启动的 Windows4. Docker Hub 地址5. Github 地址 0. 背景 我们可以在 Windows 系统使用安装 wsl-ubuntu,今天玩玩在 wsl-ub…...
Datawhale 组队学习之大模型理论基础 Task7 分布式训练
第8章 分布式训练 8.1 为什么分布式训练越来越流行 近年来,模型规模越来越大,对硬件(算力、内存)的发展提出要求。因为内存墙的存在,单一设持续提高芯片的集成越来越困难,难以跟上模型扩大的需求。 为了…...
05-使用结构体构建相关数据
上一篇: 04-了解所有权 结构体(struct)是一种自定义数据类型,可以将多个相关值打包命名,组成一个有意义的组。如果你熟悉面向对象的语言,那么结构体就像是对象的数据属性。在本章中,我们将对元组…...
【Android】Android中的系统镜像由什么组成?
文章目录 总览Boot Loader 的加锁与解锁Boot 镜像内核RAM diskARM 中的设备树 (Device Tree) /System 和/Data 分区镜像参考 总览 各种Android设备都只能刷专门为相应型号的设备定制的镜像。 厂商会提供一套系统镜像把它作为“出厂默认”的 Android 系统刷在设备上。 一个完…...
仿真机器人-深度学习CV和激光雷达感知(项目2)day7【ROS关键组件】
文章目录 前言Launch 文件了解 XML 文件Launch 文件作用Launch 文件常用标签实例--作业1的 Launch 文件TF Tree介绍发布坐标变换--海龟例程获取坐标变换--海龟自动跟随例程rqt_工作箱前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容是我为复试准备的第二个…...
解锁一些SQL注入的姿势
昨天课堂上布置了要去看一些sql注入的案例,以下是我的心得: 1.新方法 打了sqli的前十关,我发现一般都是联合查询,但是有没有不是联合查询的方法呢…...
Qt 拖拽事件示例
一、引子 拖拽这个动作,在桌面应用程序中是非常实用和具有很友好的交互体验的。我们常见的譬如有,将文件拖拽到某个窗口打开,或者拖拽文件到指定位置上传;在绘图软件中,选中某个模板、并拖拽到画布上,画布上变回绘制该模板的图像… 诸如此类,数不胜数。 那么,在Qt中我…...
Linux:命名管道及其实现原理
文章目录 命名管道指令级命名管道代码级命名管道 本篇要引入的内容是命名管道 命名管道 前面的总结中已经搞定了匿名管道,但是匿名管道有一个很严重的问题,它只允许具有血缘关系的进程进行通信,那如果是两个不相关的进程进行通信࿰…...
实习记录——第五天
今天我的心情不是很美丽,昨天晚上没怎么睡好,因为我一直在想离不离开实验室?该怎么说的事情?但是又觉得这个项目还没有完全结束,冒昧提这个事情是不是不好?最终也没得出一个结论,晚上睡得也不踏…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...
