首页 > 数据库 >mysql当一个字段以逗号隔开存多个名字,用sql取这个名字对应的id并修改

mysql当一个字段以逗号隔开存多个名字,用sql取这个名字对应的id并修改

时间:2023-07-27 12:33:33浏览次数:40  
标签:SET utf8 id 名字 NAMES STUDENT sql CLASS

当前有两个表,class班级表和student学生表

 

 

需求:我们需要把class班级表的student_ids中的name,改成student的id

这里我们可以用“find_in_set”函数

-- 注意s.name要在前面
select c.id,c.CLASS_NAME,GROUP_CONCAT(s.id) as count,c.STUDENT_NAMES
from class c left join student s
on FIND_IN_SET(s.`name`,c.STUDENT_NAMES)
group by c.id

 


下一步我们需要把group_coucat(s.id)更新到class表的student_ids

我们用 update 表1 inner join 表2 on 表1.字段 = 表2.字段 set 表1.字段 = 表2.字段 语句
// 意思就是把根据条件把表2的数据更新到表1中

update class c inner join (
select c.id,c.CLASS_NAME,GROUP_CONCAT(s.id) as count,c.STUDENT_NAMES
from class c left join student s
on FIND_IN_SET(s.`name`,c.STUDENT_NAMES)
group by c.id
) b on c.id = b.id set c.STUDENT_IDS = b.count;

 

 

————————————————
版权声明:本文为CSDN博主「qq_42281649」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42281649/article/details/126537734


附件
-- 建表班级表CLASS
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for CLASS
-- ----------------------------
DROP TABLE IF EXISTS `CLASS`;
CREATE TABLE `CLASS` (
`ID` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '班级ID',
`CLASS_NAME` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '班级名称',
`STUDENT_IDS` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '人员ID',
`STUDENT_NAMES` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '人员名字'
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '班级人员' ROW_FORMAT = Compact;

-- ----------------------------
-- Records of CLASS
-- ----------------------------
INSERT INTO `CLASS` (`ID`,`CLASS_NAME`,`STUDENT_IDS`,`STUDENT_NAMES`) VALUES ('1', '一班', '', '张三,李四,王五,小刘');
INSERT INTO `CLASS` (`ID`,`CLASS_NAME`,`STUDENT_IDS`,`STUDENT_NAMES`) VALUES ('2', '二班', '', '小李');
INSERT INTO `CLASS` (`ID`,`CLASS_NAME`,`STUDENT_IDS`,`STUDENT_NAMES`) VALUES ('3', '三班', '', '赵权,苏武');

-- 建表student
create table student(
`id` varchar(20),
`name` varchar (20)
)

 

标签:SET,utf8,id,名字,NAMES,STUDENT,sql,CLASS
From: https://www.cnblogs.com/19li/p/17584645.html

相关文章

  • Idea 常用快捷键
    1、alt+enter快速导入命名空间2、alt+insert快速生成get、set、构造函数、toString方法重写等3、ctrl+shift+/多行注释4、ctrl+N快速搜索莫个类、文件、符号等5、ctrl+H打开某个类的继承树 双击选中类型,ctrl+H右侧就可以看到该类的继承树,可以和ctrl+N搭配使用6、......
  • 5、开发环境-使用IDE
    一、使用IDE使用集成开发环境(IDE)很方便,因为它通常具有高级源代码编辑工具、内置调试器等功能。幸运的是,您可以使用自己喜欢的IDE来开发Webots控制器。Webots可以与任何IDE一起创建、构建和调试机器人控制器。这只是正确设置IDE以使用Webots控制器的构建规则的问题。为每个操作系......
  • MySQL
    一、简介1、sql、DB、DBMS分别是什么,他们之间的关系?DB:DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)DBMS:DataBaseManagementSystem(数据库管理系统,常见的有:MySQL、Oracle、DB2、Sybase、SqlServer...)SQL:结构化查询语言,是一门标准通用的语言,标准的sql适合于所有的数......
  • NineData已支持「最受欢迎数据库」PostgreSQL
    根据在StackOverflow发布的2023开发者调研报告中显示,PostgreSQL以45%vs41%的受欢迎比率战胜MySQL,成为新的最受欢迎的数据库。NineData也在近期支持了PostgreSQL,用户可以在NineData平台上进行创建数据库/Schema、管理用户与角色、导出数据、执行SQL等操作。另外,Ni......
  • 网络安全之SQL注入基于DVWA平台
    弱口令SQL注入万能密码admin'--'admin'#万能用户名xxx'or1=1limit1---脱库一库:information_schema三表:schemata表:存放所有数据库信息tables表:存放所有表信息columns表:存放所有字段信息六字段:schemata表的schema_name字段:存放具体的数据库名......
  • plsql-同义词
    同义词:同义词是对象的别名,不占用任何实际的存储空间,只在oracle数据字典中保存其定义描述,在使用同义词时,oracle会将其翻译为对象的名称用途:简化sql语句隐藏对象的名称和所有者为分布式数据库的远程对象提供位置透明性提供对数据库对象的公共访问创建数据库链......
  • Java基础和MySQL
    Java基础==和equals的区别==比较的是值是否相等。==作用于基本数据类,他比较的是内容==作用于引用数据类型,比较的是地址值equals比较的是对象是否是同一个对象,比较的是对象的内容equals()方法存在于Object类中,在没有重写之前和==是一样,也是比较的是引用数据类型的地址......
  • pgsql备份工具:pg_rman在Linux下的安装、设置与使用
    https://blog.csdn.net/Absurdreal/article/details/128872628?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-8-128872628-blog-128017299.235%5Ev38%5Epc_relevant_sort&depth_1-utm_sou......
  • 支持13系统! MacDroid pro Mac连接安卓设备 安卓文件传输工具
    太棒了。。。MacDroid终于支持13系统了!!MacDroid是一款可以让你在Mac电脑上访问和管理Android设备的软件。它可以通过USB连接,让你在Mac上浏览Android设备上的文件,包括照片、音乐、视频、文档等等。同时,它也支持将文件从Mac传输到Android设备上。此外,它还可以让你在Mac上备份和......
  • id
    id打印真实以及有效的用户和所在组的信息概要id[OPTION]...[USER]...主要用途没有选项时,打印指定用户ID信息。选项-a兼容性选项,没有实际作用。-Z,--context只打印进程的安全上下文。-g,--group只打印有效的组ID。-G,--groups打印......