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

查询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
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows git bash 使用zsh 并集成 oh my zsh

参考了 这篇文章 进行配置,记录了自己的踩坑过程,并增加了 zsh-autosuggestions 插件的集成。 主要步骤: 1. git bash 这个就不说了,自己去网上下,windows 使用git时候 命令行基本都有它。 主要也是用它不方便&…

QD Laser携“Lantana”激光器参展SPIE光子学西部展2025,聚焦紧凑型设计

据悉,QD Laser公司将在2025年SPIE光子学西部展览会上展出其最新产品——世界最小一体化紧凑型可见光激光器“Lantana”。该展会将于1月28日至30日在旧金山的Moscone中心举行。 在展会期间,QD Laser公司将现场展示这款超小型、轻便设备—— “Lantana”。…

Ubuntu 22.04 TLS 忘记root密码,重启修改的解决办法

1.想办法进入这个界面,我这里是BIOS引导的是按Esc按一下就行,UEFI的貌似是按Shift不得而知,没操作过。下移到Advanced options for Ubuntu,按enter 2.根据使用的内核版本,选择带「recovery mode」字样的内核版本&#…

Proteus-8086调试汇编格式的一点心得

这阵子开始做汇编的微机实验(微机原理与接口技术题解及实验指导,吴宁版本13章),中间出了挺多问题,解决后记录下。 先上电路图 用子电路来仿真发现仿真的时候子电路这块根本没有高低电平输出,只好把子电路拿…

外部flash烧写算法学习笔记(一)

一,STM32CubeProgrammer STM32下载编程工具 | STM32CubeProg介绍、下载、安装和使用教程 - 知乎 1.使用速览 2.外部烧写 二,QSPI外部烧写算法制作 STM32H7的花式玩转SPI Flash章节也更新了,含MDK下载算法制作和STM32CubeProg下载算法制作 …

在centos上编译安装opensips【初级-默认安装】

环境:centos9 last opensips3.2 dnf update -y dnf install -y gcc make git automake libtool pcre-devel libxml2-devel \libcurl-devel postgresql-devel \bzip2-devel zlib-devel ncurses-devel libuuid-devel \libpcap-devel # 有报错的直接删除cd /usr/lo…

【Prometheus】PromQL进阶用法

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Fabric区块链网络搭建:保姆级图文详解

目录 前言1、项目环境部署1.1 基础开发环境1.2 网络部署 2、后台环境2.1、环境配置2.2、运行springboot项目 3、PC端3.1、安装依赖3.2、修改区块链网络连接地址3.3、启动项目 前言 亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加…

【SpringCloud】黑马微服务学习笔记

目录 1. 关于微服务 ?1.1 微服务与单体架构的区别 ?1.2 SpringCloud 技术 2. 学习前准备 ?2.1 环境搭建 ?2.2 熟悉项目 3. 正式拆分 ?3.1 拆分商品功能模块 ?3.2 拆分购物车功能模块 4. 服务调用 ?4.1 介绍 ?4.2 RustTemplate?的使用 4.3 服务治理-注册中…

RabbitMQ1-消息队列

目录 MQ的相关概念 什么是MQ 为什么要用MQ MQ的分类 MQ的选择 RabbitMQ RabbitMQ的概念 四大核心概念 RabbitMQ的核心部分 各个名词介绍 MQ的相关概念 什么是MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出&am…

鸿蒙参考文档和问题记录

本文用于记录鸿蒙使用过程中的问题和相关参考文档 问题记录 1. 兼容性测试套件问题 ActsStartAbilityForResultNoTargetBundleListStageTest套件测试失败:模块FreeInstall 技术资料 1. HarmonyOS应用如何打包HAP并安装到真机 HarmonyOS应用如何打包HAP并安装到真…

虚幻基础-1:cpu挑选(14600kf)

能帮到你的话,就给个赞吧 😘 文章目录 ue非常吃cpu拉满主频打开项目编写蓝图运行原因 时间长 关于压力测试 本文以14600kf为例,双12购入,7月份产。 ue非常吃cpu 经本人测试,ue是非常吃cpu的。 拉满主频 无论任何时间…

css动画水球图

由于echarts水球图动画会导致ios卡顿&#xff0c;所以纯css模拟 展示效果 组件 <template><div class"water-box"><div class"water"><div class"progress" :style"{ --newProgress: newProgress % }"><…

基于 Spring Boot 和 Vue.js 的全栈购物平台开发实践

在现代 Web 开发中&#xff0c;前后端分离的架构已经成为主流。本文将分享如何使用 Spring Boot 和 Vue.js构建一个全栈购物平台&#xff0c;涵盖从后端 API 开发到前端页面实现的完整流程。 1. 技术栈介绍 后端技术栈 JDK 1.8&#xff1a;稳定且广泛使用的 Java 版本。 Spring…

nginx离线安装部署详解(附一键启动 环境变量)

学习nginx的过程中 看了许多帖子 但是都没有全套的部署 所以想自己写一篇帖子 正好也可以给后续想要学习nginx的人参考一下 当时在学习的时候总是在想 为什么要学习离线安装 这玩意不是一个dnf命令不就完事了吗 在后续的学习中才发现 原来在实际环境中许多机器都是离线…

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(一)

Understanding Diffusion Models: A Unified Perspective&#xff08;一&#xff09; 文章概括引言&#xff1a;生成模型背景&#xff1a;ELBO、VAE 和分层 VAE证据下界&#xff08;Evidence Lower Bound&#xff09;变分自编码器 &#xff08;Variational Autoencoders&#x…

Biotin sulfo-N-hydroxysuccinimide ester ;生物素磺基-N-羟基琥珀酰亚胺酯;生物素衍生物;190598-55-1

一、生物素及其衍生物的概述 生物素衍生物是指在生物素&#xff08;Vitamin H或B7&#xff09;分子基础上进行化学修饰得到的衍生化合物。这些衍生化合物在生物医学研究、临床诊断和药物开发等领域有着广泛的应用。 生物素&#xff08;Biotin&#xff09;是一种水溶性维生素&a…

Freemarker模板引擎技术

【问题】当渲染文章数据时&#xff0c;由于文章的数据很多&#xff0c;直接去查询文章内容表的话&#xff0c;效率比较低。 【解决】使用freemarker将文章的内容通过模板技术生成静态的html文件存储到minio中&#xff0c;这样用户就只需要拿着minio的url去minio里获取静态页面即…

Python在多个Excel文件中找出缺失数据行数多的文件

本文介绍基于Python语言&#xff0c;针对一个文件夹下大量的Excel表格文件&#xff0c;基于其中每一个文件内、某一列数据的特征&#xff0c;对其加以筛选&#xff0c;并将符合要求与不符合要求的文件分别复制到另外两个新的文件夹中的方法。 首先&#xff0c;我们来明确一下本…

Linux 内核中的 InfiniBand 核心模块:drivers/infiniband/core/device.c 分析

InfiniBand 是一种高性能、低延迟的网络互连技术,广泛应用于高性能计算(HPC)、数据中心和云计算等领域。Linux 内核中的 InfiniBand 子系统提供了对 InfiniBand 设备的支持,而 drivers/infiniband/core/device.c 文件则是 InfiniBand 核心模块的重要组成部分。本文将对 dev…