`
sangei
  • 浏览: 329339 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

(转)join, inner join, left join, right join, full join的区别

阅读更多

inner join可以简写为join

 

连接分为两种:内连接与外连接。

A.内连接

 

内连接,即最常见的等值连接,例:

 

SELECT *

FROM TESTA,TESTB

WHERE TESTA.A=TESTB.A

等价于

select * from testa inner join testb on testa.a=testb.a

 

B.外连接

 

外连接分为左外连接,右外连接和全外连接。

 

1  左外连接 left outer join 或者 left join

 

左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:

 

SELECT *

FROM TESTA

LEFT OUTER JOIN TESTB

ON TESTA.A=TESTB.A

 

其中主表是testa

 

Oracle 中等价于

 

SELECT *

FROM TESTA,TESTB

WHERE TESTA.A=TESTB.A(+)

 

三个表做左外连接

 

SELECT *

FROM TESTA

LEFT OUTER JOIN TESTB

ON TESTA.A=TESTB.A

LEFT OUTER JOIN TESTC

ON TESTA.A=TESTC.A

 

Oracle 中等价于

 

SELECT *

FROM TESTA,TESTB,TESTC

WHERE TESTA.A=TESTB.A(+)

AND TESTA.A=TESTC.A(+)

 

2 右外连接 right outer join 或者 right join

 

右外连接是在等值连接的基础上加上被连接表的不匹配数据

 

SELECT *

FROM TESTA

RIGHT OUTER JOIN TESTB

ON TESTA.A=TESTB.A

 

其中被连接表是testb

Oracle支持的另一种写法

 

 

 

SELECT *

FROM TESTA,TESTB

WHERE TESTA.A(+)=TESTB.A

 

 

 

3.全外连接 full outer join 或者 full join

 

全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上

 

 

 

SELECT *

FROM TESTA

FULL OUTER JOIN TESTB

ON TESTA.A=TESTB.A

 

 

 

全外连接的等价写法,对同一表先做左连接,然后右连接

 

 

 

SELECT  TESTA.*,TESTB.*

FROM TESTA

LEFT OUTER JOIN TESTB

ON TESTA.A=TESTB.A

UNION

SELECT TESTA.*,TESTB.*

FROM TESTB

LEFT OUTER JOIN TESTA

ON TESTA.A=TESTB.A

 

“(+)”所在位置的另一侧为连接的方向

 

分享到:
评论

相关推荐

    inner join、 left join 、right join、 outer join之间的区别

    inner join、 left join 、right join、 outer join之间的区别

    SQL语句inner join,left join ,right join连接的不同之处

    SQL语句inner join,left join ,right join连接的不同之处, 非常实用

    join on 语句及扩展

    Join on/inner join on/full join on/full outer join on/left join on/right join on/cross join on; 在使用jion时,on和where条件的区别;

    SQL表连接查询(inner join、full join、left join、right join)1

    表的数据有:一、内连接-inner jion :最常见的连接查询可能是这样,查出学生的名字和成绩:[sql] view plain copy select s.

    sql中join总结

    SQL中大概有这么几种JOIN:cross joininner joinleft outer joinright outer joinfull outer join他们都是基于cross join(笛卡尔乘积),举例说明

    SQL联合查询inner join、outer join和cross join的区别详解

    这三者的区别很多人都应该不是很清楚,包括我自己,下面我们一起来看看,如果你使用join连表,缺陷的情况下是inner join,另外,开发中使用的left join和right join属于outer join,而outer join还包括full join....

    【SQL高级(三)】【SQL 连接(JOIN)】

    文章目录SQL 连接(JOIN)不同的 SQL JOINSQL INNER JOIN 关键字SQL LEFT JOIN 关键字SQL RIGHT JOIN 关键字SQL FULL OUTER JOIN 关键字 SQL 连接(JOIN) SQL join 用于把来自两个或多个表的行结合起来。 下图展示了 ...

    SQL中inner join、outer join和cross join的区别

    对于SQL中inner join、outer join和cross join的区别很多人不知道,我也是别人问起,才查找资料看了下,跟自己之前的认识差不多,如果你使用join连表,缺陷的情况下是inner join,另外,开发中使用的left join和right...

    SQL中JOIN的使用详解

    详细说明JOIN的用法,包括LEFT JOIN、RIGHT JOIN、INNER JOIN、SELF JOIN、FULLJOIN

    mysql 开发技巧之JOIN 更新和数据查重/去重

    1 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN(MySQL 不支持)、CROSS JOIN 这是在网上找到的非常好的一篇博文,图解 join 语句: CODING HORROR-A Visual Explanation of SQL Joins 下图可以很清楚的明白,join ...

    SQL中的left join right join

    数据库常见的join方式有三种:inner join, left outter join, right outter join(还有一种full join,因不常用,本文不讨论)。这三种连接方式都是将两个以上的表通过on条件语句,拼成一个大表。

    浅谈sql连接查询的区别 inner,left,right,full

    下面小编就为大家带来一篇浅谈sql连接查询的区别 inner,left,right,full。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    SQL多表连接查询、多表关联

    sql多表连接查询inner join, left join , right join ,full join ,cross join Posted on 2008-05-07 21:55 我开始懂了 阅读(21431) 评论(9) 编辑 收藏 inner join,full outer join,left join,right jion 内部连接 ...

    sql server几种Join的区别测试方法

    主要来介绍下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的区别。 Inner Join:筛选两边都有的记录 Full Out Join:两边都筛选出来,匹配能匹配的,不能匹配的用NULL列出 Cross Join:列出...

    Which SQL statement is the trump card to the senior software developer

    Within so many kinds of DML statements in SQL, I think four kinds of them, including Case When, Left Outer Join/Left Join / Right Outer Join /Right Join/ Inner Join, WITH AS and UNION/UNION ALL, are ...

    SQL语句中不同的连接JOIN及join的用法

    JOIN or INNER JOIN(内连接) : 这两个是相同的,要求两边表同时有对应的数据,返回行,任何一边缺失数据就不显示。 LEFT JOIN(左外连接):即使右边的表中没有匹配,也从左表返回所有的行。 RIGHT JOIN(右外...

    SQL 语法 SQL 总结 SQL教程

    SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL Union SQL Select Into SQL Create DB SQL Create Table SQL Constraints SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key ...

    tp5.1 框架join方法用法实例分析

    INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要...

    sql学习笔记

    inner join内连接,同join JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在...

Global site tag (gtag.js) - Google Analytics