用外连接来组合表

2016.12.2

十二.用外连接来组合表

内连接的主要限制是要显示任何结果的话,都要在所有的连接的表中有相应的匹配。SQL中把内连接作为默认连接,所以可以只是用JOIN来指定一个内连接,而不是一定要用INNER JOIN

与内连接不同,外连接有3种类型:左连接(LEFT OUTER JOIN),右连接(RIGHT OUTER JOIN)和全连接(FULL OUTER JOIN)。可以直接表示为:LEFT JOINRIGHT JOINFULL JOIN

12.1 左连接

SELECT

table1.columnlist

Table2.columnlist

Table3.columnlist

FROM table1

LEFT JOIN table2

ON table1.column1=table2.column2

LEFT JOIN table3

ON table2.column2=table3.column3

ORDER BY table1.columnlist,table2.columnlist

对于关键字LEFT JOIN来说,表排列的顺序是非常重要的,当指定一个LEFT JOIN时,LEFT JOIN左边的表一定是主表,LEFT JOIN右边的是从表。当连接主从表时,我们需要主表的所有行,即使从表中没有行与之匹配

12.2 WHERE一起使用判断NULL

SELECT

table1.columnlist

Table2.columnlist

Table3.columnlist

FROM table1

LEFT JOIN table2

ON table1.column1=table2.column2

LEFT JOIN table3

ON table2.column2=table3.column3

WHERE conditionlist

ORDER BY table1.columnlist,table2.columnlist

12.3 右连接

右连接与左连接的不同在于列出两个表的顺序不同。右连接中,主表出现在RIGHT JOIN的右边,从表出现在RIGHT JOIN的左边,

SELECT

table1.columnlist

Table2.columnlist

Table3.columnlist

FROM table3

RIGHT JOIN table2

ON table3.column2=table2.column2

RIGHT JOIN table1

ON table2.column1=table1.column1

ORDER BY table1.columnlist,table2.columnlist

RIGHT JOIN前后列出表的顺序至关重要,但是ON后面列出的列的顺序则并不重要。建议使用左连接,人的直觉上,先列出的表更重要。

12.4 全连接(MySql中没有)

在内连接中,两个表都是主表,当匹配两个表时,对于选中的行数据,在两个表中必须有一个匹配。在左连接或者右连接中,一个主表,一个从表(可选)。

在全连接中,两个表都是从表,如果表A和表B进行全连接,则会显示:

(1)A 的所有行,即使它在表B中没有匹配的行

(2)B的所有行,即使它在表A中没有匹配的行

SELECT

table1.columnlist

Table2.columnlist

FROM table1

FULL JOIN table2

ON table1.column1=table2.column1

ORDER BY table1.columnlist,table2.columnlist

全连接显示了两个表之间双向都没有匹配的数据,这中表之间的关系很少见,所以,全连接很少用到。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值