zoukankan      html  css  js  c++  java
  • left join注意事项

    一、【问题描述】

    客户表(CLT.CSM_BASEINFO)左连接证件信息表(CLT.CSM_CERTINFO),通过客户名称查询客户信息。

    1)证件信息表的字段筛选条件,放到on后面,查询结果正常

    SELECT  clt.CLT_COD, ctf.CTF_NBR       
          FROM  CLT.CSM_BASEINFO clt  
    LEFT JOIN  CLT.CSM_CERTINFO ctf     
               ON  clt.CLT_UID = ctf.CLT_UID AND  
                      ctf.STS = 'A' AND             
                      ctf.CTF_TYP = 'C02'                    
    WHERE  clt.STS = 'A' AND             
                      clt.CLT_NAM ='STOLT *** B.V.'  ; 

    2)证件信息表的字段筛选条件,放到where后面,找不到客户信息

    SELECT  clt.CLT_COD, ctf.CTF_NBR       
          FROM  CLT.CSM_BASEINFO clt  
    LEFT JOIN  CLT.CSM_CERTINFO ctf     
               ON  clt.CLT_UID = ctf.CLT_UID                             
        WHERE clt.STS = 'A' AND             
        clt.CLT_NAM ='STOLT *** B.V.' AND
        ctf.STS = 'A' AND             
        ctf.CTF_TYP = 'C02' ; 

    二、【原因分析】

    on后面的筛选条件,针对连接表(证件信息表)
    where后面的筛选条件,针对主表(客户表)

    三、【结论】

    left jion时,连接表的字段筛选条件应该放在on后面,不能放在where后面

    四、【注意事项】

    后来发现 join on and 不会过滤结果记录条数,只会根据and后的条件是否显示 CTF_NBR表的记录,CLT_COD表的记录一定会显示。

  • 相关阅读:
    eclipse常用快捷键
    Android 布局
    Android UI设计
    Android Context 是什么?
    内部类
    手写单例模式
    上课笔记:移动开发新利器-你好,Flutter
    Android Fragment
    Kotlin语言
    Android虚拟机和类加载机制
  • 原文地址:https://www.cnblogs.com/xiejn/p/15725139.html
Copyright © 2011-2022 走看看