MySQL 多对多查询的使用
多对多查询
如:
一门课程可以多个学生选择,
一个学生也可以拥有多门课程。
其实使用中间表,就很好的完成了多对多的查询
下面有样表,和具体实现代码
# 课程表
create table class( -- 课程表id int primary key auto_increment, -- 主键 自增cname varchar(32) not null -- 课程名称
);
# 学生表
create table student( -- 学生表id int primary key auto_increment, -- 学生id 主键 自增sname varchar(32) not null, -- 学生姓名age int not null -- 学生年龄
);
# 中间表
create table cls_stu_tab( -- 中间表id int primary key auto_increment, -- id 主键cid int not null, -- 课程表idsid int not null -- 学生表id
);
# 添加数据
# 课程
insert into class (cname) values('打野'),('上单'),('辅助'),('射手'),('法师');
# 学生
insert into student(sname,age) values('韩信',22),('李白',23),('孙悟空',54),('兰陵王',19),('小乔',22),('大桥',23),('曹操',33),('太乙真人',28),('鲁班七号',33),('狄仁杰',88),('阿珂',18),('关羽',25),('刘备',29),('张飞',23),('哪吒',3),('黄忠',56);
# 中间表
insert into cls_stu_tab (sid,cid) values(1,1),(2,1),(2,3),(3,3),(4,1),(4,2),(5,3),(5,5),(6,3),(6,5),(7,1),(7,2),(7,3),(7,5);# 多对多的查询,需要2张和1张中间表
# 曹操选择哪些课程
select s.sname, -- 学生姓名c.cname -- 课程姓名
from student s -- 学生表
join cls_stu_tab cst -- 中间表
on s.id=cst.sid -- 建立连接学生表和中间表
joinclass c -- 课程表
onc.id=cst.cid -- 建立连接课程表和中间表
wheres.sname='曹操'; -- 约束条件/* 显示结果
+--------+--------+
| sname | cname |
+--------+--------+
| 曹操 | 打野 |
| 曹操 | 上单 |
| 曹操 | 辅助 |
| 曹操 | 法师 |
+--------+--------+
*/
# 打野都被哪些学生选择了
select s.sname, -- 查询姓名c.cname -- 查询课程
fromstudent s -- 学生表
joincls_stu_tab cst -- 中间表
oncst.sid=s.id -- 建立连接中间表和学生表
joinclass c -- 课程表
oncst.cid = c.id -- 建立连接中间表和课程表
wherec.cname = '打野'; -- 约束查询条件/* 显示结果
+-----------+--------+
| sname | cname |
+-----------+--------+
| 韩信 | 打野 |
| 李白 | 打野 |
| 兰陵王 | 打野 |
| 曹操 | 打野 |
+-----------+--------+
*/
MySQL 多对多查询的使用相关推荐
- Mysql多对多查询
1.多对多需要三张表,如图所示 2.对应是SQL语句 SELECTA.aname,B.hobby FROMA,B,AB WHEREA.id = AB.aid AND B.id = AB.bid 3.对 ...
- egg mysql 连表查询_Egg中使用Sequelize框架关联查询Mysql数据库
Sequelize视频教程_Eggjs仿小米商城企业级Nodejs项目实战视频教程: https://www.itying.com/goods-941.html 一.Sequelize简介 前面的章节 ...
- mysql中怎么查询单行单列_MySql中的子查询-结果单行单列
MySQL是开源免费和功能多面的小型数据库,MySQL也是目前流行通用的关系型数据库,已经被 Oracle 收购了.随着版本更新升级,加入一些高级功能,MySQL6.x 版本也开始收费.不过本教程将使 ...
- mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析
推荐学习 重识SSM,"超高频面试点+源码解析+实战PDF",一次性干掉全拿走 全网独家的"MySQL高级知识"集合,骨灰级收藏,手慢则无 "吃&qu ...
- 【MyBatis框架】高级映射-多对多查询
多对多查询 1.需求 查询用户及用户购买商品信息. 2.sql语句 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表: orders.orderdetai ...
- mybatis高级映射多对多查询(二)
在这篇博客中,我来介绍下mybatis中的多对多查询的案例,在mybatis中,如何使用ResultMap来实现多对多的查询? 案例:一个user可以有很多role,一个role可以有很多entitl ...
- MyBatis研习录(10)——MyBatis多对多查询
C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View ...
- MybatisPlus实现高效的多对多查询
1.前置 事先声明一下代码中蕴含了大量的Stream和Lambda表达式操作,还不清楚的小伙伴可以去参考一下Java8新特性Stream流 ,而却我是用的是MybatisPlus这方面不清楚的也可以参 ...
- java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码
jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...
最新文章
- 经典网络AlexNet介绍
- 敏捷研发落地之持续集成
- 研发团队来了高颜值的妹子,这结局万万没想到 | 每日趣闻
- 被丧心病狂的验证码虐过,来感受一下交互体验很好的十款吧
- python大神作品_Python大神成长之路: 第一次学习记录
- linux 环境安装DBI和DBD_03
- 数据流技术在GPU和大数据处理中的应用
- 【4K HDR】2020年东京圣诞灯会/
- 《深入理解 Spring Cloud 与微服务构建》第三章 Spring Cloud
- 常见视频编码比较大全 常见视频解码技术资料1
- 定时任务的选型及改造
- 跨区域报考计算机考试可以吗,考生注意!2020年医师资格机考跨题型不可以回看(附上机操作系统)...
- selenium火狐驱动_在Selenium Firefox驱动程序上运行测试
- 用Pylint规范化Python代码,附PyCharm配置
- 2021大厂Java面试真题(分布式 )
- TbSchedule的简单使用及其配置
- VUE源码相关面试题汇总
- 氨基酸密码子表(Amino Acid Codon)
- juns java,Java中的基本數據類型
- TWaver自动化设计平台Legolas —— 数据响应动作