LEFT JOIN
LEFT JOIN 关键字会从左表那里返回所有的行,即使在右表中没有匹配的行。
即LEFT JOIN 的 ON 条件不会对数据行造成影响

RIGHT JOIN
RIGHT JOIN 关键字会从右表那里返回所有的行,即使在左表中没有匹配的行。

INNER JOIN 
INNER JOIN 关键字会从右表那里返回所有的行,即使在左表中没有匹配的行。

INNER JOIN 的ON 条件会对数据行进行筛选

因此 INNER JOIN的 ON条件 放在ON后 或 WHERE后是一样的效果

从论坛里抄一句过来:

on是连接条件, where是过滤条件。

对内连接来说, 二者等价。

对外连接来说,
on影响侧输入的输出, 合连接条件则输出相应列值,不合则输出null, 对主输入无影响。
where影响结果集。

on是连接条件, where是过滤条件。

对内连接来说, 二者等价。

对外连接来说,
  on影响侧输入的输出, 合连接条件则输出相应列值,不合则输出null, 对主输入无影响。
  where影响结果集。

select * from ta a left join tb on a.id=b.id and b.n is null
此语句输出a表所有行,对于b表的列,当id=a.id且n为null时才会有输出。

select * from ta a left join tb on a.id=b.id where b.n is null
只有b.n为null的行,且a表中存在id=b.id时,才输出,符则a表的行也被过滤

on是连接条件, where是过滤条件。

对内连接来说, 二者等价。

对外连接来说,
  on影响侧输入的输出, 合连接条件则输出相应列值,不合则输出null, 对主输入无影响。
  where影响结果集。

select * from ta a left join tb on a.id=b.id and b.n is null
此语句输出a表所有行,对于b表的列,当id=a.id且n为null时才会有输出。

select * from ta a left join tb on a.id=b.id where b.n is null
只有b.n为null的行,且a表中存在id=b.id时,才输出,符则a表的行也被过滤

on是连接条件, where是过滤条件。

对内连接来说, 二者等价。

对外连接来说,
  on影响侧输入的输出, 合连接条件则输出相应列值,不合则输出null, 对主输入无影响。
  where影响结果集。

select * from ta a left join tb on a.id=b.id and b.n is null
此语句输出a表所有行,对于b表的列,当id=a.id且n为null时才会有输出。

select * from ta a left join tb on a.id=b.id where b.n is null
只有b.n为null的行,且a表中存在id=b.id时,才输出,符则a表的行也被过滤

on是连接条件, where是过滤条件。

对内连接来说, 二者等价。

对外连接来说,
  on影响侧输入的输出, 合连接条件则输出相应列值,不合则输出null, 对主输入无影响。
  where影响结果集。

select * from ta a left join tb on a.id=b.id and b.n is null
此语句输出a表所有行,对于b表的列,当id=a.id且n为null时才会有输出。

select * from ta a left join tb on a.id=b.id where b.n is null
只有b.n为null的行,且a表中存在id=b.id时,才输出,符则a表的行也被过滤

SQLServer inner join,left join,right join,outer join 备忘备忘的更多相关文章

  1. SQL中inner join、outer join和cross join的区别

    对于SQL中inner join.outer join和cross join的区别简介:现有两张表,Table A 是左边的表.Table B 是右边的表.其各有四条记录,其中有两条记录name是相同 ...

  2. sqlite数据库执行full outer join

    sqlite数据库执行full outer join时提示:RIGHT and FULL OUTER JOINs are not currently supported. sqlite数据库不支持(+ ...

  3. MySql Outer Join 简单化

    查询from语句中的Outer Join可以在多种情况下被简化: 在解析阶段,右外连接操作可以被转变为等下ode值包含left join的操作,在一般情况下,转变: (T1, ...) RIGHT J ...

  4. 【转载】SQL中inner join、outer join和cross join的区别

    对于SQL中inner join.outer join和cross join的区别很多人不知道,我也是别人问起,才查找资料看了下,跟自己之前的认识差不多, 如果你使用join连表,缺陷的情况下是inn ...

  5. hive中left join、left outer join和left semi join的区别

    先说结论,再举例子.   hive中,left join与left outer join等价.   left semi join与left outer join的区别:left semi join相当 ...

  6. oracle 内连接(inner join)、外连接(outer join)、全连接(full join)

    转自:https://premier9527.iteye.com/blog/1659689 建表语句: create table EMPLOYEE(EID NUMBER,DEPTID NUMBER,E ...

  7. “,”、“natural join”、“natural left outer join”、“natural right outer join”的用法总结

    “,”:代表笛卡尔积: “natural join”:代表自然连接,即同名列等值连接: “natural left outer join”:表示左外连接: “natural right outer j ...

  8. SQL中inner join,outer join和cross join的区别

    使用join连表,缺陷的情况下是inner join,开发中使用的left join和right join属于outer join,outer join还包括full join 现有两张表,Table ...

  9. left outer join的on不起作用

    left outer join的on不起作用 Why and when a LEFT JOIN with condition in WHERE clause is not equivalent to ...

  10. Oracle Partition Outer Join 稠化报表

    partition outer join实现将稀疏数据转为稠密数据,举例: with t as (select deptno, job, sum(sal) sum_sal from emp group ...

随机推荐

  1. 【sqli-labs】 less42 POST -Error based -String -Stacked(POST型基于错误的堆叠查询字符型注入)

    Forgot your password? New User click here? 看源码,可以发现和less 24不同的一点在于password字段没有进行转义处理 那就对password字段进行 ...

  2. 【sqli-labs】 less32 GET- Bypass custom filter adding slashes to dangrous chars (GET型转义了'/"字符的宽字节注入)

    转义函数,针对以下字符,这样就无法闭合引号,导致无法注入 ' --> \' " --> \" \ --> \\ 但是,当MySQL的客户端字符集为gbk时,就可能 ...

  3. Java中StringTokenizer类的使用

    StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数. 1.构造函数 public StringTokenizer(String str) public Str ...

  4. python PIL图像处理-框选

    框选图中位置 代码 from PIL import Image,ImageDraw,ImageFont,ImageFilter import random #--------------------- ...

  5. 数据结构总结(UPDATING......)

    目标: 1.栈........√ 2.队列......√ 3.堆.........× 4.并查集...× 栈: #define MAXN 65536 struct stack{ int sz[MAXN ...

  6. PHP循环输出二维数组的数据

    //下面是一个例子$g_id = isset($_GET['id'])?$_GET['id']:'1';//定义变量$g_id,使用三元运算符是为了避免出现waring $p_id = ($g_id& ...

  7. delphi窗口的create和free,一个古老的话题

    窗体分为模式窗体和无模式窗体. 模式窗体在创建窗口创建和释放: begin if not Assigned(FB_Input_JianYanDan) then FB_Input_JianYanDan ...

  8. 【codeforces 793A】Oleg and shares

    [题目链接]:http://codeforces.com/contest/793/problem/A [题意] 每次你可以对1..n中的任意一个数字进行减少k操作; 问你最后可不可能所有的数字都变成一 ...

  9. Nexus私服的搭建

    1.nexus 介绍     是开源的,用该框架架设maven私有服务器   2.nexus私服环境搭建     把nexus.war包放到tomcat的webapps下面     浏览且登录     ...

  10. (34)Spring Boot的启动器Starter详解【从零开始学Spring Boot】

    Spring Boot应用启动器基本的一共有N(现知道的是44)种:具体如下: 1)spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. 2 ...