left join后边跟on...and 和where...and的区别
文章目录
- 1. 建表
- 2. on...and
- 3. where...and
1. 建表
testA
CREATE TABLE testA (Id int ( 10 ) PRIMARY KEY,NAME VARCHAR ( 10 )
)
INSERT INTO testA
VALUES( 1, '小黄' );
INSERT INTO testA
VALUES( 2, '小绿' );
INSERT INTO testA
VALUES( 3, '小白' );
INSERT INTO testA
VALUES( 4, '小黑' );
INSERT INTO testA
VALUES( 5, '小花' );
testB
create TABLE testB (Id int ( 10 ) PRIMARY KEY,age int ( 10 )
)
INSERT INTO testB
VALUES( 1, 10 );
INSERT INTO testB
VALUES( 2, 11 );
INSERT INTO testB
VALUES( 3, 12 );
INSERT INTO testB
VALUES( 4, 13 );
两表如下:
2. on…and
先来一个常用的left join...on
SELECT*
FROMtestA a
LEFT JOIN testB b
ON a.id = b.id
on
后边加 and a.id = 1
SELECT*
FROMtestA a
LEFT JOIN testB b
ON a.id = b.id
and a.id = 1 # 连接限制条件 a.id = 1
on
后边加 and b.id = 1
SELECT*
FROMtestA a
LEFT JOIN testB b
ON a.id = b.id
and b.id = 1
on
后边加 and b.age = a.id
SELECT*
FROMtestA a
LEFT JOIN testB b
ON a.id = b.id
and b.age = a.id
on 后的 and 有两表关联的字段: b.age 和 a.id,由于b.age 没有与 a.id相等的数据
所以a
表全部显示,b
表内容为空
3. where…and
SELECT*
FROMtestA a
LEFT JOIN testB b
ON a.id = b.id
and b.id > 1where b.id =2
以上sql分解一下:首先看
SELECT*
FROMtestA a
LEFT JOIN testB b
ON a.id = b.id
and b.id > 1
然后再加上where b.id =2
由此可见,on…and是连接。where…and 是过滤!
left join后边跟on...and 和where...and的区别相关推荐
- inner join 和 left join 限制条件放在 where 和 on 后面 有什么区别?
1.inner join 和 left join 限制条件放在 where 和 on 后面 有什么区别? 先说结论: 用 inner join , LEFTJOIN时,条件直接放ON后面,是先筛选后连 ...
- left join 后边的on条件 小记
结论: left join 为保证左表所有行 因此 on里的条件只对右表起作用,控制左表的条件写到这里也没用 原理: on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的 ...
- left join的基本用法以及on与where的区别
文章目录 前言 实例 总结 前言 我们在写sql语句的时候,总是无法避免使用到连接关键词,比如内连接.外连接.种类是很多的,我在这里贴上一张在别处找到的图: 这张图我认为是非常详细了,它展示出了SQL ...
- 把条件写在 join on 后面和写到where后面的区别
部分转载:https://www.cnblogs.com/zsq23837880/p/7040923.html 前两天面试,遇到了一道题.说的是LEFT JOIN关联表中ON,WHERE后面跟条件的区 ...
- left join条件放在on后面和where后面的区别
on后面的条件: 对于左表来说,不管on的条件是否为真,左表都会全部返回 对于右表来说,当on的条件为假时,左表数据用null返回 where后面的条件: 对连接后的结果表进行过滤 如果将右表的过滤条 ...
- 2021年大数据Flink(四十五):扩展阅读 双流Join
目录 扩展阅读 双流Join 介绍 Window Join Interval Join 代码演示1 代码演示2 重点注意 扩展阅读 双流Join 介绍 https:// ...
- mysql loop嵌套_MySQL中Nested-Loop Join算法小结
数据库中JOIN操作的实现主要有三种:嵌套循环连接(Nested Loop Join),归并连接(Merge Join)和散列连接或者哈稀连接(Hash Join).其中嵌套循环连接又视情况又有两种变 ...
- Oracle学习笔记:a inner join b与from a,b where a.x=b.x的差异
近期,在使用Oracle的过程中,由以下两段代码的执行引发的思考,到底 select * from a,b where a.id = b.id 和 select * from a inner join ...
- inner join on 加条件和where加条件_SQL学习笔记 - GROUP BY / JOIN / UNION
最近在DataCamp上学习SQL(基于PostgreSQL)的课程,本文主要记录自己易记混的点,以便日后参考学习,不做原理讲解. GROUP BY(分组)一般和聚合函数一起使用,包括COUNT(), ...
最新文章
- 利用SqlHelper.cs实现Web程序对数据库的增、删、改等操作
- Cisco端口镜像配置
- 你应该知道的浮点数基础知识
- 移位操作提高代码的可读性_本地记录或类,以提高流操作的可读性
- Eclipse里的快捷键
- jeecg boot一对多新增的附表不会主键是一个string_测试开发专题:spring-boot如何使用JPA进行双向一对多配置...
- c调用python第三方库_Python使用ctypes模块调用DLL函数之C语言数组与numpy数组传递...
- lumen php命令,php – 如何使用命令行手动运行laravel / lumen作业
- mysql 语句账号注入_mysql中SQL语句的注入问题
- html两个select怎么放在一行,HTML`select`和`input`在一行中
- Word去除段前黑点
- 【Netty源码系列(一)】SpringBoot整合Netty实现多端口绑定
- 光纤跳线的分类和概述
- DeFi黑暗森林历险记,我这样追回了百万美元
- 2023年CISSP考点及预约时间参考
- idea 修改单个文件的 编码格式
- 数字经济时代,企业上云将成为数字化转型突破口
- Min3D测试-在Android里面载入MMD模型-快速3D模型显示测试-By黑月君
- 批处理删除重复的文件
- openTSDB详解之Writing Data