这里以左连接 left join 为例,说明 on 后面的条件与 where 后面条件的区别

创建测试表:TAB_1、TAB_2

create table TAB_1 as (select 'c' as A,'d' as B,'3' as C,'4' as D from dualunion allselect 'a' as A,'b' as B,'1' as C,'2' as D from dual);
create table TAB_2 as (select 'c' as A,'d' as B,'2' as C,'4' as D from dualunion allselect 'a' as A,'b' as B,'1' as C,'3' as D from dual);

1、在 on 里面限制从表

select * from TAB_1 M left join TAB_2 N
on M.A=N.A and M.B=N.B
and N.C='1';

2、 在where里面限制从表

select * from TAB_1 M left join TAB_2 N
on M.A=N.A and M.B=N.B
where N.C='1';

3、 在 on 里面限制主表

select * from TAB_1 M left join TAB_2 N
on M.A=N.A and M.B=N.B
and M.C='1';

4、在 where 里面限制主表

select * from TAB_1 M left join TAB_2 N
on M.A=N.A and M.B=N.B
where M.C='1';

5、在 on 里面同时限制主表和从表

select * from TAB_1 M left join TAB_2 N
on M.A=N.A and M.B=N.B
and M.C='1'
and N.C='4';

select * from TAB_1 M left join TAB_2 N
on M.A=N.A and M.B=N.B
and M.C='4'
and N.C='1';

6、在 on 里面限制从表,在where里面限制主表

select * from TAB_1 M left join TAB_2 N
on M.A=N.A and M.B=N.B
and N.C='4'
where M.C='1';

select * from TAB_1 M left join TAB_2 N
on M.A=N.A and M.B=N.B
and N.C='1'
where M.C='4';

7、在 on 里面限制主表,在 where 里面限制从表

select * from TAB_1 M left join TAB_2 N
on M.A=N.A and M.B=N.B
and M.C='1'
where N.C='4';

select * from TAB_1 M left join TAB_2 N
on M.A=N.A and M.B=N.B
and M.C='4'
where N.C='1';

总结:

通过以上实例,不难看出 on 后面的条件只会作为连接条件进行限定,并不影响结果集,结果集依然按照 left join 的特性进行输出。where 后面的条件是作为连接之后结果集的筛选 。

SQL语句理解左右连接和where相关推荐

  1. oracle中sql语句(+)符号代表连接

    oracle中sql语句(+)符号代表连接 (+)在=前边为右连接 (+)在=后边为左连接 SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b. ...

  2. SQL语句的内连接,外连接,左连接,右连接,全连接详解例子

    SQL语句的内连接,外连接,左连接,右连接,全连接详解例子 1.关系:链接分为内连接,外连接:外连接又分为左连接.右连接和全连接 分别为 内连接:(Inner Join):参与表格以JOIN关键词连在 ...

  3. oracle sql连接符号,Oracle中sql语句(+)符号代表连接的使用讲解

    oracle中sql语句(+)符号代表连接 (+)在=前边为右连接 (+)在=后边为左连接 SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b. ...

  4. sql语句的内连接、左外连接、右外连接的理解

    sql语句 内连接.左外连接.右外连接的理解 大家在初学数据库时,对DQL中的连接查询是否有些疑惑,不知道什么时候什么场景下该用那种连接查询? 不要着急,接下来由我来给大家介绍一下,本人对内连接.左外 ...

  5. php连接mysql执行sql语句_php+mysql 连接服务器、数据库以及执行SQL语句的类库

    展开全部 我这里有个很好的通用数据62616964757a686964616fe78988e69d8331333262363066库连接类,我就喜欢用这个,试试看. class DB_Handle{ ...

  6. 关于SQL语句的左连接和右连接,内连接和外连接的区别

    数据库版本为 mysql  Ver 14.14 Distrib 5.6.26, for Win64 (x86_64) 首先举个例子:(左连接和右连接) 现在我们有俩张表中内容如下. 我们使用左连接查询 ...

  7. sql语句动态创建连接服务器

    --建立连接服务器  EXEC sp_addlinkedserver  --要创建的链接服务器名称   'DMZLINK', --产品名称          'MS', --OLE DB 字符  'S ...

  8. Sql语句查询之内连接与外连接

    文章目录 一.连接查询 1.什么是连接查询? 2.连接查询的分类 二.内连接 1.内连接之等值连接 2.内连接之非等值连接 3.内连接之自连接 三.外连接 1.什么是外连接,和内连接有什么区别? 一. ...

  9. sql语句的各种连接

    一.INNER JOIN 内连接是最常见的一种连接,只连接匹配的行. inner join语法 select column_name(s) from table 1 INNER JOIN table ...

最新文章

  1. 国内ITSM解决方案-UNIPER
  2. Matlab 自带机器学习算法汇总
  3. 对话智能新高度:全面解读百度开放域对话模型PLATO
  4. python--*args和**kwargs可变参数
  5. 4400 万个微软帐户使用泄露的密码
  6. js点击复制兼容Firefox
  7. MCGS图库 触摸屏组态图库 触摸屏图库 昆仑通态触摸屏专用CGS
  8. 指数基金的正确购买姿势
  9. 百分点数据科学实验室:产品生命周期管理创新应用落地实践
  10. VisualAge使用技巧(二)
  11. 深度融合钉钉PaaS,授客学堂助力企业实现培训数字化
  12. 传统情感分类方法与深度学习的情感分类方法对比
  13. 云宏刘建平:细说中小企业如何上云
  14. 超简单EventBus使用
  15. 转:攻击JavaWeb应用[2]-CS交互安全
  16. 靶机渗透练习60-digitalworld.local:FALL
  17. Rust 常见问题之一:Blocking waiting for file lock on package cache
  18. 预测微前端的未来 - luca
  19. 【剑指Offer】个人学习笔记_32_从上到下打印二叉树 IIIIII
  20. Trapcode Particular for Mac(AE 3D粒子插件)

热门文章

  1. 教娘学电脑(二十三)
  2. [资料备份] 高效类库汇总【转】
  3. jmeter响应断言
  4. MQTT协议详解及v5.0实践——实践类
  5. 笔记整理3----Java语言高级(三)11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包修饰符
  6. CodeMix使用的语言和框架:Python
  7. 2021/8/4- eclipse的优化等级
  8. 弘辽科技:淘宝和天猫店铺装修区别大吗?有哪些不同?
  9. MFC创建MEDIA_PLAYER播放器,简单教程
  10. win10 给C盘增加空间的方法【带软件diskgenius】