MySql字段的值是以逗号隔开的另一个表的主键关联查询

devtools/2025/1/22 11:15:16/

查询sql

SELECT s.student_id, s.name, c.name as course_name FROM student s
INNER JOIN course c ON FIND_IN_SET(c.course_id, s.course_id) > 0
WHERE 1 = 1;

相似sql

-- 翻译(需要带条件,可用于字典翻译,但条件需要注意唯一性)
SELECT s.student_id,s.name, GROUP_CONCAT(c.`name`) as course_name FROM student s
LEFT JOIN course c ON FIND_IN_SET(c.course_id, s.course_id) > 0
WHERE s.student_id = '20150101001';

测试数据

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (`student_id` varchar(20) NOT NULL COMMENT '主键',`name` varchar(300) DEFAULT NULL COMMENT '名称',`age` varchar(3) DEFAULT NULL COMMENT '年龄',`sex` varchar(1) DEFAULT NULL COMMENT '性别',`grade` varchar(300) DEFAULT NULL COMMENT '年级',`course_id` varchar(300) DEFAULT NULL COMMENT '课程ID',PRIMARY KEY (`student_id`)
) COMMENT='学生表';INSERT INTO student (student_id, name, age, sex, grade, course_id) VALUES('20130101001', '王五', '18', '女', 'G3', 'G3001,G3002,G3003,G3004,G3006,G3008');
INSERT INTO student (student_id, name, age, sex, grade, course_id) VALUES('20130101002', '孙七', '18', '女', 'G3', 'G3001,G3002,G3003,G3007,G3009,G3009');
INSERT INTO student (student_id, name, age, sex, grade, course_id) VALUES('20140101001', '李四', '16', '男', 'G2', 'G2001,G2002,G2003,G2004,G2007,G2008');
INSERT INTO student (student_id, name, age, sex, grade, course_id) VALUES('20140101002', '钱二', '16', '男', 'G2', 'G2001,G2002,G2003,G2004,G2005,G2007');
INSERT INTO student (student_id, name, age, sex, grade, course_id) VALUES('20150101001', '张三', '15', '男', 'G1', 'G1001,G1002,G1003,G1004,G1005,G1006');
INSERT INTO student (student_id, name, age, sex, grade, course_id) VALUES('20150101002', '赵一', '15', '男', 'G1', 'G1001,G1002,G1003,G1006,G1008,G1008');DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (`course_id` varchar(20) NOT NULL COMMENT '主键',`name` varchar(300) DEFAULT NULL COMMENT '课程名称',`duration` varchar(300) DEFAULT NULL COMMENT '课程时长',`grade` varchar(300) DEFAULT NULL COMMENT '年级',PRIMARY KEY (`course_id`)
) COMMENT='课程表';INSERT INTO course (course_id, name, duration, grade) VALUES('G1001', '语文', '35', '高1');
INSERT INTO course (course_id, name, duration, grade) VALUES('G1002', '数学', '40', '高1');
INSERT INTO course (course_id, name, duration, grade) VALUES('G1003', '英语', '32', '高1');
INSERT INTO course (course_id, name, duration, grade) VALUES('G1004', '生物', '35', '高1');
INSERT INTO course (course_id, name, duration, grade) VALUES('G1005', '物理', '40', '高1');
INSERT INTO course (course_id, name, duration, grade) VALUES('G1006', '化学', '32', '高1');
INSERT INTO course (course_id, name, duration, grade) VALUES('G1007', '历史', '35', '高1');
INSERT INTO course (course_id, name, duration, grade) VALUES('G1008', '政治', '40', '高1');
INSERT INTO course (course_id, name, duration, grade) VALUES('G1009', '地理', '32', '高1');INSERT INTO course (course_id, name, duration, grade) VALUES('G2001', '语文', '35', '高2');
INSERT INTO course (course_id, name, duration, grade) VALUES('G2002', '数学', '40', '高2');
INSERT INTO course (course_id, name, duration, grade) VALUES('G2003', '英语', '32', '高2');
INSERT INTO course (course_id, name, duration, grade) VALUES('G2004', '生物', '35', '高2');
INSERT INTO course (course_id, name, duration, grade) VALUES('G2005', '物理', '40', '高2');
INSERT INTO course (course_id, name, duration, grade) VALUES('G2006', '化学', '32', '高2');
INSERT INTO course (course_id, name, duration, grade) VALUES('G2007', '历史', '35', '高2');
INSERT INTO course (course_id, name, duration, grade) VALUES('G2008', '政治', '40', '高2');
INSERT INTO course (course_id, name, duration, grade) VALUES('G2009', '地理', '32', '高2');INSERT INTO course (course_id, name, duration, grade) VALUES('G3001', '语文', '35', '高3');
INSERT INTO course (course_id, name, duration, grade) VALUES('G3002', '数学', '40', '高3');
INSERT INTO course (course_id, name, duration, grade) VALUES('G3003', '英语', '32', '高3');
INSERT INTO course (course_id, name, duration, grade) VALUES('G3004', '生物', '35', '高3');
INSERT INTO course (course_id, name, duration, grade) VALUES('G3005', '物理', '40', '高3');
INSERT INTO course (course_id, name, duration, grade) VALUES('G3006', '化学', '32', '高3');
INSERT INTO course (course_id, name, duration, grade) VALUES('G3007', '历史', '35', '高3');
INSERT INTO course (course_id, name, duration, grade) VALUES('G3008', '政治', '40', '高3');
INSERT INTO course (course_id, name, duration, grade) VALUES('G3009', '地理', '32', '高3');

效果图1
在这里插入图片描述
效果图2
在这里插入图片描述


http://www.ppmy.cn/devtools/152581.html

相关文章

`Port: Direct Attach Copper` 和 `Port: Twisted Pair`

目录标题 这些端口类型的来源结论1. **Intel Network Interface Cards (NICs)**2. **Broadcom / Avago Technologies**3. **Mellanox Technologies (现为 NVIDIA)**4. **Chelsio Communications**5. **Realtek**6. **Netgear / TP-Link / ASUS**总结 你提到的 Port: Direct Att…

pip 相关

一劳永逸法(pip怎么样都用不了也更新不了): 重下python(卸载旧版本):请输入访问密码 密码:7598 各版本python都有,下3.10.10 python路径建立,pip无法访问方式: 访问pip要…

idea 如何安装 github copilot

idea 如何安装 github copilot 要在 IntelliJ IDEA 中安装 GitHub Copilot,可以按照以下步骤操作: 打开 IntelliJ IDEA: 启动 IntelliJ IDEA。 打开插件管理器: 点击菜单栏中的 File。 选择 Settings(Windows/Linux)或 Prefere…

微信小程序之 如何使用全局变量将openid传到其他页面

1、首先,创建全局变量: // app.js App({globalData:{openid:,zj_address:0}, ... }) 2、将openid的值赋给全局变量: ... success(response){console.log(获取到openid:,response.data.openid);that.globalData.openid respons…

2025-1-21 Newstar CTF web week1 wp

文章目录 week1headach3会赢吗智械危机 week1 headach3 根据提示,在页面的请求头里找到flag flag{You_Ar3_R3Ally_A_9ooD_d0ctor} 会赢吗 打开控制台,拿到第一部分flag 将地址栏改为提示,去到下一关 控制台调用函数,得到flag …

MDX语言的字符串处理

MDX语言的字符串处理 引言 MDX(Multidimensional Expressions)是一种专门用于多维数据库查询和分析的语言,特别是在Microsoft SQL Server Analysis Services(SSAS)中使用广泛。MDX不仅用于查询多维数据,还…

springboot医院信管系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…

IP属地:是身份证还是手机归属地?

在数字化时代,IP属地作为网络身份的一部分,经常引发人们的关注和讨论。有些人认为IP属地就像我们的身份证一样,代表着我们的真实身份和位置;而另一些人则将其与手机归属地相提并论,认为它只是网络连接的一个属性。那么…