博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
left join多表操作
阅读量:4483 次
发布时间:2019-06-08

本文共 871 字,大约阅读时间需要 2 分钟。

借用了一个博友:http://blog.csdn.net/tomholmes7/article/details/5786166

建立表结构如下:

create table a (a1 int, a2 varchar(10));
create table b (b1 int, b2 varchar(10));
create table c (c1 int, c2 varchar(10));
insert into a values( 1  ,'haha');
insert into a values( 2  ,'ssss');
insert into a values( 4  ,'tttt');
insert into b values( 1  ,'cccc');
insert into c values( 2  ,'xxxx');

执行下面的两条left join:
select * from  a
        left join  b on a.a1=b.b1
        left join  c on a.a1=c.c1;
       
select * from a
        left join b on a.a1=b.b1
        left join c on b.b1=c.c1;
实际上结果是不同的:
前者是:

后者是:

个人理解:

  left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID)。B表记录不足的地方均为NULL。

  当left join c的时候,是以a left join b生成的临时表为主表然后去left join c表,我是这么理解的。

  a left join b on a.a1=b.b1 left join c on a.a1=c.c1 => 一环扣一环,基本上不会出现问题

转载于:https://www.cnblogs.com/zafuacm/p/4151682.html

你可能感兴趣的文章
机器算法中的数据预处理
查看>>
selenium+python实现自动化登录
查看>>
从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)。...
查看>>
Python基础-文件操作
查看>>
Java ConcurrentModificationException异常原因和解决方法
查看>>
获取本机ip地址
查看>>
虚函数与纯虚函数的代码解读——2
查看>>
SQL Server 安装程序失败 不能在控件上调用 Invoke 或 BeginInvoke
查看>>
bzoj3283: 运算器
查看>>
jsp的标签
查看>>
HTML中的SVG
查看>>
HDU 5492 Find a path
查看>>
常用ping服务列表
查看>>
AspnetPager表格标题排序功能
查看>>
学习JNA,Jnative
查看>>
MyBatis框架中Mapper映射配置的使用及原理
查看>>
OpenLayers3基础教程——OL3基本概念
查看>>
password、文件MD5加密,passwordsha256、sha384、sha512Hex等加密
查看>>
蓝的成长记——追逐DBA(10):飞刀防身,熟络而非专长:摆弄中间件Websphere...
查看>>
死磕 java同步系列之ReentrantLock VS synchronized——结果可能跟你想的不一样
查看>>