left join多表操作

借用了一个博友: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 => 一环扣一环,基本上不会出现问题

时间: 2024-10-20 00:04:38

left join多表操作的相关文章

model,单表操作

一. model Django提供了一个抽象层(“Model”)来构建和管理Web应用程序的数据. django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表. 关系对象映射(Object Relational Mapping,简称ORM),  它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动. 二. 单表操作 <一>. 表的创建

model多表操作

一. 创建模型 from django.db import models # Create your models here. #比较常用的作者信息放到这个表里面 class Author(models.Model): id = models.AutoField(primary_key=True) name=models.CharField(max_length=32) age=models.IntegerField() authorDetail=models.OneToOneField(to=

Django-模型层(多表操作)

1.创建模型 表和表之间的关系 一对一.多对一.多对多,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系(one-to-one) 出版商模型:出版商有名称,所在城市以及email 书籍模型: 书籍有书名和出版日期,一本书

Django基础五之django模型层(一)单表操作

目录 一 ORM简介 二 单表操作 一.创建表 创建模型 2 更多字段和参数 3 settings配置 4.自定义字段(了解) 二.添加表纪录 方式1 方式2(用的多) 方式3:批量插入 三.查询表纪录 查询API(都是重点) 基于双下划线的模糊查询 四.删除表纪录 五.修改表纪录 三 章节作业 1 图书管理系统 2 查询操作练习 四 xxx 本节目录 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,

Django基础五之django模型层(二)多表操作

目录 一 创建模型 关于db_column和verbose_name 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询(基于join实现的) 进阶练习(连续跨表) 五 聚合查询.分组查询.F查询和Q查询 查询练习 F查询与Q查询 F查询 Q查询 六 ORM执行原生sql语句(了解) 执行原生查询 直接执行自定义SQL 七 Python脚本中调用Django环境(django外部脚本使用models) 八 补充多个app配置models 本节目录 一 创建模型 表和表之间的关系

sas中的sql(4) 多表操作,内连接,外连接(left | right | full/join),In-Line Views

Understanding Joins 1.Joins combine tables horizontally (side by side) by combining rows. The tables being joined are not required to have the same number of rows or columns. (被join的表不需要行或列与join表的相同) 2.When any type of join is processed, PROC SQL sta

MySql基本的多表操作

多表操作 交叉查询(笛卡尔积查询): #A表中的每一条记录都对应B表中的所有记录,所以,A和B的交叉查询的条目数即为:A条目数*B条目数 语法: select 列名 from A cross join B where 条件 select 列名 from A,B where 条件 内查询 #A表与B表有主外键关系时,查询外键所对应的主键条目 语法: select 列名 from A inner join B on(A.外键 = B.主键);#显式内查询 select 列名 from A,B whe

前端学数据库之多表操作

× 目录 [1]准备工作 [2]多表更新 [3]两步更新[4]连接[5]无限级表 前面的话 上一篇博文中介绍了子查询的相关内容,最后我们将查询结果存储到一个新的数据表中.下面我们将接着子查询的案例,详细介绍数据库中的多表操作 准备工作 在上一篇博文,我们将详细数据存储到tdb_goods数据表中,将详细数据中的类别信息存储到tdb_goods_cates数据表中 接下来,我们要研究如何通过tdb_goods_cates数据表来更新tdb_goods表 多表更新 多表更新类似于单表更新 UPDAT

10_连表操作

表与表之间关系? 1对1 多对多 什么是1对多? 在多的一方创建一个外键字段,把这个外键字段设置成外键,对应 少的一方主键 -- 约束插入外键字段时候,数据必须关联表中已经存在的数据 外键类型和关联字段类型相同 插入时候,先插入关联表数据,在插入原表数据 如何通过命令创建1对多关系? -- 在创建表时候创建外键 constraint 外键名 foreing key (外键字段) references 关联表名(关联字段) -- 在表外外键操作 -- alter table 表名 drop for