zoukankan      html  css  js  c++  java
  • 我犯过的sql错误介绍:外连接,多表查询相关。

    ASSESS_FINAL_RESULT表有supplierId,是supplier表的外键
    两张表都有deleted字段,表示是否已经被删除。
    如下两条语句:

    select *
      from supplier s
      left join ASSESS_FINAL_RESULT afr
        on afr.supplier_id = s.supplier_id
       and afr.deleted = 0
     where s.deleted = 0
    -------------------
     select *
       from supplier s
       left join ASSESS_FINAL_RESULT afr
         on afr.supplier_id = s.supplier_id
      where s.deleted = 0
        and afr.deleted = 0
    

      

    当ASSESS_FINAL_RESULT表没有字段,或者全部deleted=1(被删除)的状态下,前者可以查询到数据,而后者会查询到0条数据。因为连接之后的虚拟表会有两列deleted字段,并且afr.deleted全部为空。
    所以,我们在join表的时候,注意把连接表的限定条件放在join 后面的on上。
    把主要查询的表的限定条件放在where上。
    如果一定要让两张表形成级联关系,不妨使用inner来查询

    天行健君子以自强不息。
  • 相关阅读:
    软硬链接
    查看文件内容
    cp+mv
    cd+rm+pwd
    ls+tree
    绝对路径和相对路径
    Linux目录结构
    修改hostname
    java. util. concurrent. atomic
    git
  • 原文地址:https://www.cnblogs.com/mrye/p/2474843.html
Copyright © 2011-2022 走看看