sql 三表左外链接的2种写法【原】
初始化语句
DROP TABLE student;
CREATE TABLE student(ID VARCHAR(50) PRIMARY KEY, NAME VARCHAR(50));
INSERT INTO student VALUES('','bobo');
INSERT INTO student VALUES('','sisi');
INSERT INTO student VALUES('','gugu');
INSERT INTO student VALUES('','mimi'); DROP TABLE room;
CREATE TABLE room(room_id VARCHAR(50) PRIMARY KEY, student_id VARCHAR(50),room_type VARCHAR(50));
TRUNCATE TABLE room;
INSERT INTO room VALUES('r1','','musicRoom');
INSERT INTO room VALUES('r2','','musicRoom');
INSERT INTO room VALUES('r3','','musicRoom');
INSERT INTO room VALUES('r4','','englishRoom');
INSERT INTO room VALUES('r5','','englishRoom');
create INDEX r_student_id on room (STUDENT_ID);
create INDEX room_type on room (ROOM_TYPE);
SELECT * FROM room; DROP TABLE teacher;
CREATE TABLE teacher(teacher_id VARCHAR(50) PRIMARY KEY, student_id VARCHAR(50),teacher_type VARCHAR(50));
TRUNCATE TABLE teacher;
INSERT INTO teacher VALUES('m1','','musicTeacher');
INSERT INTO teacher VALUES('m2','','musicTeacher');
INSERT INTO teacher VALUES('m3','','englishTeacher');
INSERT INTO teacher VALUES('m4','','englishTeacher');
INSERT INTO teacher VALUES('m5','','englishTeacher');
create index t_student_id on teacher (STUDENT_ID);
create index teacher_type on teacher (TEACHER_TYPE);
student表:
|
ID |
NAME |
|
1 |
bobo |
|
2 |
sisi |
|
3 |
gugu |
|
4 |
mimi |
room表:
|
ROOM_ID |
STUDENT_ID |
ROOM_TYPE |
|
r1 |
1 |
musicRoom |
|
r2 |
2 |
musicRoom |
|
r3 |
3 |
musicRoom |
|
r4 |
1 |
englishRoom |
|
r5 |
2 |
englishRoom |
teacher表:
|
TEACHER_ID |
STUDENT_ID |
TEACHER_TYPE |
|
m1 |
1 |
musicTeacher |
|
m2 |
2 |
musicTeacher |
|
m3 |
1 |
englishTeacher |
|
m4 |
2 |
englishTeacher |
|
m5 |
3 |
englishTeacher |
左外连接sql语句一
SELECT * FROM student s LEFT OUTER JOIN teacher t ON s.id = t.student_id LEFT OUTER JOIN room r ON s.id = r.student_id WHERE t.teacher_type = 'musicTeacher' AND r.room_type = 'musicRoom';
左外连接sql语句二
SELECT * FROM (SELECT* FROM student s LEFT OUTER JOIN teacher t ON s.id = t.student_id WHERE t.teacher_type = 'musicTeacher' ) t1 LEFT OUTER JOIN room r ON t1.id = r.student_id WHERE r.room_type = 'musicRoom';
查询结果集如下:
|
ID |
NAME |
ROOM_ID |
STUDENT_ID |
ROOM_TYPE |
TEACHER_ID |
STUDENT_ID |
TEACHER_TYPE |
|
1 |
bobo |
r1 |
1 |
musicRoom |
m1 |
1 |
musicTeacher |
|
2 |
sisi |
r2 |
2 |
musicRoom |
m2 |
2 |
musicTeacher |
两个左外连接sql语句性能没有差别
.
sql 三表左外链接的2种写法【原】的更多相关文章
- 大数据算法设计模式(2) - 左外链接(leftOuterJoin) spark实现
左外链接(leftOuterJoin) spark实现 package com.kangaroo.studio.algorithms.join; import org.apache.spark.api ...
- MySQL☞左外链接与右外连接
外链接查询:即要查询有关联关系的数据,还要查询没有关联关系的数据.(个人理解为:表A和表B两个关联的列中)如下图: emmm,简单的来说两个表的关联关系:book.bid=bookshop.id,他们 ...
- Sql语句模糊查询字符串的两种写法
Sql语句模糊查询有两种写法,一种是在jdbcTemplate的查询方法参数里拼接字符串%,一种是在Sql语句里拼接%字符串. public class IsNameDaoImpl implement ...
- SQL三表左关联查询
今天在开发的时候遇到了一个需求就是三遍关联查询,表A包含有表B和表C的uid,然后使用left join左关联查询: SELECT c.`uid`, `fromuseruid`, `touseruid ...
- sql中,case when的几种写法
Province = CASE WHEN DCCity = '商丘' THEN '河南' WHEN DCCity <> '商丘' THEN '非河南' END, case ISNeed w ...
- javaWeb学习笔记——关于交叉连接-内连接-左外连接-右外连接的区别
废话不说:直接上图1 图1-1 table1表 图1-2 table2 图1-3 cross join 交叉连接 图1-4 显示内连接 图1-5 左外链接 图1-6 右外链接
- Mysql的内连接,外链接,交叉链接
内连接:只连接匹配的行 inner join select A.*,B.* from A,B where A.id = B.parent_id 外链接包括左外链接,右外链接,全外链接 左外链接:包含 ...
- SSIS连接-左外连接
应用场景: 当有多个数据源时,可能是在不同的数据库,或者是一个数据源来自数据库,另一个来自excel文件,想要把他们合并,像sql的左外联接时,应用到 源1: select 'A01' GoodsNo ...
- EF架构~linq模拟left join的两种写法,性能差之千里!
回到目录 对于SQL左外连接我想没什么可说的,left join将左表数据都获出来,右表数据如果在左表中不存在,结果为NULL,而对于LINQ来说,要实现left join的效果,也是可以的,在进行j ...
随机推荐
- 如何保证 spring-boot 和 spring-cloud版本一致
spring-boot 版本 和 spring-cloud版本是一一对应的,很多错误都是由于版本不一致导致的.很多百度的东西太老了, 版本一升级就会出错. spring的jar包依赖关系是最难的,但聪 ...
- Java 枚举(enum) 详解7种常见的用法
Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...
- php 排序数组array_multisort
$arr[] = array('name'=>'a','flag'=>1); $arr[] = array('name'=>'b','flag'=>2); $arr[] = a ...
- 使用kubeadm安装Kubernetes
Docker安装 yum install -y yum-utils yum-config-manager --add-repo https://docs.docker.com/v1.13/engine ...
- WCF 改成 restful api
1. 右健 svc , view markup, 添加 Factory="System.ServiceModel.Activation.WebServiceHostFactory" ...
- [HNOI2015]落忆枫音 解题报告
[HNOI2015]落忆枫音 设每个点入度是\(d_i\),如果不加边,答案是 \[ \prod_{i=2}^nd_i \] 意思是我们给每个点选一个父亲 然后我们加了一条边,最后如果还这么统计,那么 ...
- Swarm平滑升级回滚
#滚动更新创建服务: docker service create --name my_web --replicas=5 nginx:1.12更新为1.14 docker service update ...
- Nginx+Keepalived部署
-----------ReProxy-------------------------Client-----------192.168.56.200 nginx+keepalived 192.168. ...
- CF1101F Trucks and Cities
题意:给定线段上n个特殊点,m次询问. 每次询问:在第l个点到第r个点这一段区间中选出k个点,将其分成k + 1段.使得最长的段尽量短. 输出这m个询问中答案最大的. n<=400,m<= ...
- codeblocks: 使用动态链接库(pcre)的配置
说明:在c/c++程序中使用动态链接库, 编译后需要相关的dll文件(如:libpcre-1.dll,libpcreposix-0.dll)才能正常的运行. 2014-06-27