inner join on, left join on, right join on的区别与介绍

Table A 
aid   adate 
1      a1 
2      a2 
3      a3 
TableB 
bid bdate 
1    b1 
2   b2 
4    b4 
两个表a,b相连接,要取出id相同的字段 
select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据. 
此时的取出的是: 
1 a1 b1 
2 a2 b2

那么left join 指: 
select * from a left join b on a.aid = b.bid 
首先取出a表中所有数据,然后再加上与a,b匹配的的数据 
此时的取出的是: 
1 a1 b1 
2 a2 b2 
3 a3 空字符

http://hovertree.com/menu/sql/
同样的也有right join 
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据 
此时的取出的是: 
1 a1 b1 
2 a2 b2 
4 空字符 b4

LEFT JOIN 或 LEFT OUTER JOIN。 
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行, 
而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值

举个例子你就能知道了!

A表(a1,b1,c1)      B表(a2,b2) 
a1   b1   c1       a2    b2 
01   数学 95       01    张三 
02   语文 90       02    李四 
03   英语 80       04    王五 
select A.*,B.* from A 
inner join B on(A.a1=B.a2) 
结果是: 
a1   b1   c1       a2    b2 
01   数学 95       01    张三 
02   语文 90       02    李四

select A.*,B.* from A 
left outer join B on(A.a1=B.a2) 
结果是: 
a1   b1   c1       a2    b2 
01   数学 95       01    张三 
02   语文 90       02    李四 
03   英语 80       NULL  NULL

select A.*,B.* from A 
right outer join B on(A.a1=B.a2) 
结果是: 
a1   b1   c1       a2    b2 
01   数学 95       01    张三 
02   语文 90       02    李四 
NULL NULL NULL     04    王五

select A.*,B.* from A 
full outer join B on(A.a1=B.a2) 
结果是: 
a1   b1   c1       a2    b2 
01   数学 95       01    张三 
02   语文 90       02    李四 
03   英语 80       NULL  NULL 
NULL NULL NULL     04    王五

推荐:http://www.cnblogs.com/roucheng/p/3504463.html

时间: 2024-11-14 13:09:44

inner join on, left join on, right join on的区别与介绍的相关文章

inner join(内连接)、left join(左连接)、right join(右连接)、full join(全连接)区别

sql中的连接查询有inner join(内连接).left join(左连接).right join(右连接).full join(全连接)四种方式,它们之间其实并没有太大区别,仅仅是查询出来的结果有所不同.例如我们有两张表: Orders表通过外键Id_P和Persons表进行关联. 1.inner join(内连接),在两张表进行连接查询时,只保留两张表中完全匹配的结果集. 我们使用inner join对两张表进行连接查询,sql如下: SELECT p.LastName, p.First

Sort merge join、Nested loops、Hash join(三种连接类型)

目前为止,典型的连接类型有3种: Sort merge join(SMJ排序-合并连接): 首先生产driving table需要的数据,然后对这些数据按照连接操作关联列进行排序:然后生产probed table需要的数据,然后对这些数据按照与driving table对应的连接操作列进行排序:最后两边已经排序的行被放在一起执行合并操作.排序是一个费时.费资源的操作,特别对于大表.所以smj通常不是一个特别有效的连接方法,但是如果driving table和probed table都已经预先排序

mysql left join on 后面的and 条件和 where条件区别

如: select * from table_1 left join table_2 on table_1.id = table_2.t1_id and table_2.status > 0 select * from table_1 left join table_2 on table_1.id = table_2.t1_id where table_2.status > 0 发现两个查询存在差异. 为什么会存在差异,这和on与where查询顺序有关. (1):ON后面的筛选条件主要是针对的

Oracle表与表之间的连接方式(内连接:inner join 、外连接 全连接: full outer join、左连接:left outer join 、右连接:right outer join、自然连接:natural join)

1 --内连接:INNER JOIN 它表示返回两个表或记录集连接字段的匹配记录,表示两个表中相互包含的部分 2 select * from student inner join sc on student.sno=sc.sno; 3 --外连接(全连接):包含左.右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行.不符合条件的,以空值代替. 4 --全连接:表示两个表组合在一起,左右不相匹配时使用空值替换 5 select * from student full outer join

SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)

掌握了这些,就比较高级啦 Using the Same Table Twice 如下面查询中的branch字段 SELECT a.account_id, e.emp_id, b_a.name open_branch, b_e.name emp_branch FROM account AS a INNER JOIN branch AS b_a ON a.open_branch_id = b_a.branch_id INNER JOIN employee AS e ON a.open_emp_id

SQL join中级篇--hive中 mapreduce join方法分析

1. 概述. 本文主要介绍了mapreduce框架上如何实现两表JOIN. 2. 常见的join方法介绍 假设要进行join的数据分别来自File1和File2. 2.1 reduce side join reduce side join是一种最简单的join方式,其主要思想如下: 在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签 (tag),比如:tag=0表示来自文件File1,tag=2表示来自文件File2.

【fork/join】java并发编程-fork/join示例

package com.chinamobile.epic.tako.common.graphite.query.sync.impl; import com.google.common.collect.Lists; import java.util.List; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinTask; import java.util.concurrent.Recursiv

Spark SQL 之 Join 实现

原文地址:Spark SQL 之 Join 实现 Spark SQL 之 Join 实现 涂小刚 2017-07-19 217标签: spark , 数据库 Join作为SQL中一个重要语法特性,几乎所有稍微复杂一点的数据分析场景都离不开Join,如今Spark SQL(Dataset/DataFrame)已经成为Spark应用程序开发的主流,作为开发者,我们有必要了解Join在Spark中是如何组织运行的. SparkSQL总体流程介绍 在阐述Join实现之前,我们首先简单介绍SparkSQL

Join 和 App

在关系型数据库系统中,为了满足第三范式(3NF),需要将满足"传递依赖"的表分离成单独的表,通过Join 子句将相关表进行连接,Join子句共有三种类型:外连接,内连接,交叉连接:外连接分为:left join.right join.full join:内链接是:inner join,交叉连接是:cross join. 一,Join子句的组成 Join子句由连接表,连接类型和On子句组成,伪代码如下: from Left_Table [inner|left|right|full] jo