SQl中Left Join 、Right Join 、Inner Join与Ful Join

1 left join
左外连接:查询结果以左表数据为准。假如左表有四条数据,右表有三条数据,则查询结果为四条,且都是左表中有的数据。

例如:

EMP表:

SAL表:

左连接

select  * from EMP Left join SAL on EMP.ENAME = SAL.ENAME;

左连接,表EMP是主表,因此查询结果是显示EMP(主表)的全部信息和SAL(附表)与EMP相关的信息。

2 right join 右外连接:查询结果以右表数据为准。假如左表有四条数据,右表有三条数据,则查询结果为三条,且都是右表中有的数据。

如:

Select * from EMP Right join SAL on EMP.ENAME = SAL.ENAME;

右连接,表SAL是主表,因此查询结果显示SALT(主表)的全部信息和EMP(附表)与SAL想关的信息。

3 inner join 内链接:以两个表数据为准。查询结果为两表都有的数据。

SELECT * FROM EMP inner join SAL on EMP.ENAME = SAL.ENAME;

 

内连接,显示的是连个表相关的信息。

4 full join 全链接:查询结果为两表全部数据

SELECT * FROM EMP full join SAL on EMP.ENAME = SAL.ENAME;

 

全连接,显示两个表所有的信息。

说明:本文举例均来源于shadowyelling的专栏

时间: 2024-12-09 21:11:23

SQl中Left Join 、Right Join 、Inner Join与Ful Join的相关文章

LINQ TO SQL 中的join(转帖)

http://www.cnblogs.com/ASPNET2008/archive/2008/12/21/1358152.html join对于喜欢写SQL的朋友来说还是比较实用,也比较容易接受的东西.在LINQ TO SQL中,写多表查询,同样可以写join,只是它有它自己的语法要求而已,语义都是一样的,下面我来讲下LINQ TO SQL中的join最基本的形式:都是最简单的,当然还有其它方面的内容,如:怎样加上过滤条件,如何分组,如何排序等等,为了单纯说join的用法,这里就简化下. Cod

Spark SQL中的broadcast join分析

在Spark-1.6.2中,执行相同join查询语句,broadcast join模式下,DAG和执行时间如下图所示: 1.broadcast join (1)DAG (2)执行时间 122 rows selected (22.709 seconds) 2.非broadcast join (1)DAG (2)执行时间 122 rows selected (55.512 seconds) 对于broadcast join模式,会将小于spark.sql.autoBroadcastJoinThres

30秒懂SQL中的join

30秒懂SQL中的join 注:本文仅仅是本人在网上看到的比较好的文章,为了以后复习方便,就文章 完全复制下来.原文地址如下:http://www.habadog.com/ 预先生成两张测试表,并插入一下测试数据: create table t1(id int, name char(10), primary key (id)); create table t2(id int, score int, primary key (id)); insert into t1 values(1, “lucy

SQL中的JOIN语法详解

参考以下两篇博客: 第一个是 sql语法:inner join on, left join on, right join on详细使用方法 讲了 inner join, left join, right join的意义和用法. 第二个是 SQL中的left outer join,inner join,right outer join用法详解 讲了关系运算背后的数学原理,以及提到了更多类型的连接操作: inner join- 笛卡尔乘积再选取, left outer join, right out

sql中的inner join, left join, right join的区别

下面介绍一下 inner join, left join, right join这者之间的区别 现在我假设有A表和B表 left join select * from A a left join B b on a.aid = b.bid; 这时以左边的A表为基础表,A表的数据全部显示, B表的数据只显示符合on后条件表达式的进行显示,右边字段数据不足的用null填补 right join select * from A a right join B b on a.aid = b.bid; 这时以

Spark SQL中的几种join

1.小表对大表(broadcast join) 将小表的数据分发到每个节点上,供大表使用.executor存储小表的全部数据,一定程度上牺牲了空间,换取shuffle操作大量的耗时,这在SparkSQL中称作Broadcast Join Broadcast Join的条件有以下几个: *被广播的表需要小于 spark.sql.autoBroadcastJoinThreshold 所配置的值,默认是10M (或者加了broadcast join的hint) *基表不能被广播,比如 left out

SQL中把筛选条件放在left outer join的on 和 where 后面的区别

create table [Table_1]([PKey] int,[FKey] int,[value1] int,[value2] int)create table[Table_2]([PKey] int,[value1] int,[value2] int)drop table [Table_1]drop table [Table_2]delete[Table_1]delete[Table_2]insert into [Table_1] values(1,0,21,31)insert into

SQL中distinct的用法和left join查询的含义

SQL中distinct的用法 1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 distinct用于返回唯一不同的值. 表A: 表B: 1.作用于单列 select distinct name from A 执行后结果如下: 2.作用于多列 示例2.1 select distinct name, id from A 执行后结果如下: 实际上是根

Access SQL中Left Join、Right Join和Inner Join的使用

1.表结构 表A                                     表B 2.Left Join 示例:2.1 Select * From A left join B on A.aid = B.bid; left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的. 换句话说,左表A的记录将会全部表示出来,而右表B只会显示符合搜索条件的记录(例子中为: A.aid = B.bid),B表记录不足的地方均为NULL. A表所有记录

sql中的inner join

sql中inner join on 的用途: (等值连接)    select * from A inner join B on A.no=B.no; 查询出所有A的号数跟B的号数相等的记录,相当于:select * from A,B where A.no=B.no; 多表查询: select * from ((表1 inner join 表2 on 表1.no=表2.no)inner join 表3 on 表1.no=表3.no )inner join 表4 on member.no=表4.n