zoukankan      html  css  js  c++  java
  • 小结left join以及中间表查询(又补充了inner join的一些内容)

    直接上例子:

    a表

     

    b表

    ab表

     

    一、left join 过程(以 select * from a left join ab on a.a_id = ab.a_id):

    用a中的记录根据on条件联合ab的记录进行筛选并做笛卡尔积,过称为

      筛选过程:

            1、a: 1,"lige"  ab: 1,3

                      1,2

            2、a: 2,"jk"    ab:2,3

            3、a:3,"df"   ab:3,3

              4、a:4,"kk"     ab:NULL

      

      笛卡尔积:

             1、  1,"lige",1,3

            1,"lige",1,2

           2、 2,"jk",2,3

           3、 3,"df",3,3

           4、"kk",null,null

    先读a表的 1,"lige"这条记录,然后根据条件在b表中筛选出1,3、1,2两条记录,做笛卡尔积,得到结果中的两条记录,然后依次进行下去

    即为查询的结果

    二、三张表连接查询的过程

    就是在a和ab做了连接查询得到的结果上再与b做连接查询

    select * from a left join ab on a.a_id=ab.a_id left join b on ab.b_id=b.b_id;

    三、LEFT JOIN条件放ON和WHERE后的区别(图转自百度经验)

     注意:条件放WHERE后时的先连接后筛选是指在根据on筛选、笛卡尔积连接(即一中的过程)之后的结果上再进行筛选!!!

     四、inner join

    inner join不会保证做连接查询的两个表中的任何一个表中的记录被查出来

    以一中的表为例:

    先进行left join

    然后是inner join

    可以看得出来,a和ab表进行左连接查询时,a表中的所有记录都被查询出来,如果ab表中没有符合连接查询条件的记录则显示为null

    而inner join 时,a表中被查询出来的只是符合连接条件的记录

     

     

  • 相关阅读:
    HDU 1525
    kmp模板
    hdu 4616 Game(树形DP)
    hdu 4619 Warm up 2(并查集活用)
    hdu 4614 Vases and Flowers(线段树加二分查找)
    Codeforces 400D Dima and Bacteria(并查集最短路)
    poj 2823 Sliding Window (单调队列)
    hdu 2196 Computer(树形dp)
    hdu 4604 Deque
    最短路径
  • 原文地址:https://www.cnblogs.com/lige-H/p/7274074.html
Copyright © 2011-2022 走看看