zoukankan      html  css  js  c++  java
  • SQL left join 特殊情况

    我们通常认为A left join B后,结果集与A表的记录条数一致

    但,并不是这样

    with  x as 
    (
    select 1 as id,90 as score from dual union all
    select 2 as id,80 as score from dual union all
    select 3 as id,70 as score from dual
    ),
    y as (
    select 1 as id ,'John' as name from dual union all
    select 2 as id,'Adam' as name from dual 
    )
    select x.id,x.score,y.name from x
    left join y on x.id=y.id

     这样的结果是我们预期的,

    但如果修改一下,连接条件是id相等,那么我们尝试 让y表的id有两个相等的

    with  x as 
    (
    select 1 as id,90 as score from dual union all
    select 2 as id,80 as score from dual union all
    select 3 as id,70 as score from dual
    ),
    y as (
    select 1 as id ,'John' as name from dual union all
    select 2 as id,'Adam' as name from dual union all
    select 2 as id,'Adam2' as name from dual union all
    )
    select x.id,x.score,y.name from x
    left join y on x.id=y.id

    这时的结果集就是多了一条,所以,在使用left join进行表关联时

    还是很需要注意这个问题的。

  • 相关阅读:
    使用xorm将结构体转为sql文件
    Java反射之方法反射demo
    Java操作Redis小案例
    Java中static修饰类的问题
    static、final修饰的变量和方法能否被继承的问题
    小学生算术
    另一种阶乘问题
    整除个数
    兰州烧饼
    对决
  • 原文地址:https://www.cnblogs.com/adamgq/p/14359869.html
Copyright © 2011-2022 走看看