联表查询 join

简介: 联表查询 join

联表查询 join

操作 描述
inner join 表中有一个匹配的就返回
left join 从左表中返回所有的值,即使右表中没有匹配
right join 从右表中返回所有的值,即使左表中没有匹配

3

/*

思路:

1. 分析需求,确定查询的列来源于哪两个类

2. 确定使用哪种链接查询

   确定交叉点

   判断的条件

*/

 

-- 查询参加了考试的同学信息(学号、学生姓名、科目编号、分数)

select*from student;

select*from result;

-- 内联查询

select s.studentno,studentname,subjectno,StudentResult

from student s

innerjoin result r

on r.studentno= s.studentno

-- 右连接

select s.studentno,studentname,subjectno,StudentResult

from student s

rightjoin result r

on r.studentno= s.studentno

-- 左连接 (查询所有同学,不考试的也会查出来)

select s.studentno,studentname,subjectno,StudentResult

from student s

leftjoin result r

on r.studentno= s.studentno

-- 等值连接

SELECT s.studentno,studentname,subjectno,StudentResult

FROM student s , result r

WHERE r.studentno= s.studentno

 

-- 查询参加了考试的同学信息(学号、学生姓名、科目名、分数)

select s.studentno,studentname,subjectname,StudentResult

from student s

innerjoin result r

on r.studentno= s.studentno

innerjoin`subject` sub

on sub.subjectno= r.subjectno

where 和 on 的区别

  • where条件是在临时表生成后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
  • on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录,还会返回on条件为真的记录
  • 总结:
  • where在查询的临时表生成后,返回符合条件的结果
  • on在临时表生成时返回对应连接方式的记录(只要满足连接要求即可)
相关文章
queryDsl多表联合查询,任意查询联合字段
这是我的通用方法 package com.spark.bitrade.service.Base; import com.querydsl.core.Tuple; import com.
4249 0
|
6月前
|
存储 SQL 关系型数据库
SQL联结表及高级联结
SQL联结表及高级联结
65 0
|
SQL JavaScript 小程序
来了,MyBatisPlus的join联表查询!
来了,MyBatisPlus的join联表查询!
来了,MyBatisPlus的join联表查询!
JOIN多表关联查询
JOIN多表关联查询
52 0
|
SQL HIVE
hive:条件查询、join关联查询、分组聚合、子查询
hive:条件查询、join关联查询、分组聚合、子查询
721 0
hive:条件查询、join关联查询、分组聚合、子查询
|
关系型数据库 MySQL Python
MySql查询出两张表中不同的数据
MySql查询出两张表中不同的数据
134 0
|
关系型数据库 MySQL 索引
【MySQL优化】一分钟带你了解三表联查优化
【MySQL优化】一分钟带你了解三表联查优化
835 0
【MySQL优化】一分钟带你了解三表联查优化