多对多查询

如:

一门课程可以多个学生选择,

一个学生也可以拥有多门课程。

其实使用中间表,就很好的完成了多对多的查询

下面有样表,和具体实现代码

# 课程表
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 多对多查询的使用相关推荐

  1. Mysql多对多查询

    1.多对多需要三张表,如图所示 2.对应是SQL语句 SELECTA.aname,B.hobby FROMA,B,AB WHEREA.id = AB.aid AND B.id = AB.bid 3.对 ...

  2. egg mysql 连表查询_Egg中使用Sequelize框架关联查询Mysql数据库

    Sequelize视频教程_Eggjs仿小米商城企业级Nodejs项目实战视频教程: https://www.itying.com/goods-941.html 一.Sequelize简介 前面的章节 ...

  3. mysql中怎么查询单行单列_MySql中的子查询-结果单行单列

    MySQL是开源免费和功能多面的小型数据库,MySQL也是目前流行通用的关系型数据库,已经被 Oracle 收购了.随着版本更新升级,加入一些高级功能,MySQL6.x 版本也开始收费.不过本教程将使 ...

  4. mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析

    推荐学习 重识SSM,"超高频面试点+源码解析+实战PDF",一次性干掉全拿走 全网独家的"MySQL高级知识"集合,骨灰级收藏,手慢则无 "吃&qu ...

  5. 【MyBatis框架】高级映射-多对多查询

    多对多查询 1.需求 查询用户及用户购买商品信息. 2.sql语句 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表: orders.orderdetai ...

  6. mybatis高级映射多对多查询(二)

    在这篇博客中,我来介绍下mybatis中的多对多查询的案例,在mybatis中,如何使用ResultMap来实现多对多的查询? 案例:一个user可以有很多role,一个role可以有很多entitl ...

  7. MyBatis研习录(10)——MyBatis多对多查询

    C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View ...

  8. MybatisPlus实现高效的多对多查询

    1.前置 事先声明一下代码中蕴含了大量的Stream和Lambda表达式操作,还不清楚的小伙伴可以去参考一下Java8新特性Stream流 ,而却我是用的是MybatisPlus这方面不清楚的也可以参 ...

  9. java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码

    jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...

最新文章

  1. 经典网络AlexNet介绍
  2. 敏捷研发落地之持续集成
  3. 研发团队来了高颜值的妹子,这结局万万没想到 | 每日趣闻
  4. 被丧心病狂的验证码虐过,来感受一下交互体验很好的十款吧
  5. python大神作品_Python大神成长之路: 第一次学习记录
  6. linux 环境安装DBI和DBD_03
  7. 数据流技术在GPU和大数据处理中的应用
  8. 【4K HDR】2020年东京圣诞灯会/
  9. 《深入理解 Spring Cloud 与微服务构建》第三章 Spring Cloud
  10. 常见视频编码比较大全 常见视频解码技术资料1
  11. 定时任务的选型及改造
  12. 跨区域报考计算机考试可以吗,考生注意!2020年医师资格机考跨题型不可以回看(附上机操作系统)...
  13. selenium火狐驱动_在Selenium Firefox驱动程序上运行测试
  14. 用Pylint规范化Python代码,附PyCharm配置
  15. 2021大厂Java面试真题(分布式 )
  16. TbSchedule的简单使用及其配置
  17. VUE源码相关面试题汇总
  18. 氨基酸密码子表(Amino Acid Codon)
  19. juns java,Java中的基本數據類型
  20. TWaver自动化设计平台Legolas —— 数据响应动作

热门文章

  1. java事务内开启新事务,并只回滚新开事务
  2. 物联网开发实战解读 何为杀手级应用?
  3. 消息队列(基础篇)- 7 消息积压了该如何处理
  4. 基于微信小程序的懒人美食帮设计与实现
  5. 04 -描述统计学- Lesson6 电子表格4_可视化数据
  6. 让你的办公更简单的这些电脑软件分享
  7. 恢复回收站的清空内容
  8. 计算机开机按f1,电脑开机按f1怎么办 电脑开机按f1解决方法【详解】
  9. 信息资源管理--初见成效篇
  10. tcpdump教程_Tcpdump教程示例