博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CareerCup] 15.4 Types of Join 各种交
阅读量:6951 次
发布时间:2019-06-27

本文共 3391 字,大约阅读时间需要 11 分钟。

 

15.4 What are the different types of joins? Please explain how they differ and why certain types are better in certain situations. 

 

Join是用来联合两个表的,每个表至少需要有一列是相同的,不同的Join类型会返回不同的结果。我们来看一个例子,有两个表,普通饮料和无卡饮料如下:

-- TABLE RegularBeverages

+-----------+-----------+| Name      | Code      |+-----------+-----------+| Budweiser | BUDWEISER || Coca-Cola | COCACOLA  || Pepsi     | PEPSI     |+-----------+-----------+

 

-- TABLE CalorieFreeBeverages

+----------------+----------+| Name           | Code     |+----------------+----------+| Diet Coca-Cola | COCACOLA || Fresca         | FRESCA   || Diet Pepsi     | PEPSI    || Pepsi Light    | PEPSI    || Purfied water  | Water    |+----------------+----------+

 

如果我们想联合这两个表,有很多种Join可以使用:

内交Inner Join:只会显示相同列匹配的项:

SELECT * FROM RegularBeverages INNER JOIN CalorieFreeBeveragesON RegularBeverages.Code = CalorieFreeBeverages.Code;+-----------+----------+----------------+----------+| Name      | Code     | Name           | Code     |+-----------+----------+----------------+----------+| Coca-Cola | COCACOLA | Diet Coca-Cola | COCACOLA || Pepsi     | PEPSI    | Diet Pepsi     | PEPSI    || Pepsi     | PEPSI    | Pepsi Light    | PEPSI    |+-----------+----------+----------------+----------+

 

外交Outer Join:外交会包含内交的结果,同时也会包含一些没有匹配到的结果,外交有如下几种:

- 左交Left Outer Join (Left Join),会包含左表的所有结果,如果没有匹配,右边就是NULL:

SELECT * FROM RegularBeverages LEFT JOIN CalorieFreeBeveragesON RegularBeverages.Code = CalorieFreeBeverages.Code;+-----------+-----------+----------------+----------+| Name      | Code      | Name           | Code     |+-----------+-----------+----------------+----------+| Coca-Cola | COCACOLA  | Diet Coca-Cola | COCACOLA || Pepsi     | PEPSI     | Diet Pepsi     | PEPSI    || Pepsi     | PEPSI     | Pepsi Light    | PEPSI    || Budweiser | BUDWEISER | NULL           | NULL     |+-----------+-----------+----------------+----------+

 

- 右交Right Outer Join (Right Join),返回右表的所有项,如果没有匹配,左边就是NULL:

SELECT * FROM RegularBeverages RIGHT JOIN CalorieFreeBeveragesON RegularBeverages.Code = CalorieFreeBeverages.Code;+-----------+----------+----------------+----------+| Name      | Code     | Name           | Code     |+-----------+----------+----------------+----------+| Coca-Cola | COCACOLA | Diet Coca-Cola | COCACOLA || Pepsi     | PEPSI    | Diet Pepsi     | PEPSI    || Pepsi     | PEPSI    | Pepsi Light    | PEPSI    || NULL      | NULL     | Fresca         | FRESCA   || NULL      | NULL     | Purfied water  | Water    |+-----------+----------+----------------+----------+

 

- 全交Full Outer Join,联合左交和右交的结果,不论有没有匹配都把结果显示出来,由于MySQL中没有这个命令,所以我们用Union把左右交的结果并起来:

SELECT * FROM RegularBeverages LEFT JOIN CalorieFreeBeveragesON RegularBeverages.Code = CalorieFreeBeverages.CodeUNIONSELECT * FROM RegularBeverages RIGHT JOIN CalorieFreeBeveragesON RegularBeverages.Code = CalorieFreeBeverages.Code;+-----------+-----------+----------------+----------+| Name      | Code      | Name           | Code     |+-----------+-----------+----------------+----------+| Coca-Cola | COCACOLA  | Diet Coca-Cola | COCACOLA || Pepsi     | PEPSI     | Diet Pepsi     | PEPSI    || Pepsi     | PEPSI     | Pepsi Light    | PEPSI    || Budweiser | BUDWEISER | NULL           | NULL     || NULL      | NULL      | Fresca         | FRESCA   || NULL      | NULL      | Purfied water  | Water    |+-----------+-----------+----------------+----------+

 

关于此内容还可以参见我之前的一篇博客。

 

转载地址:http://atkil.baihongyu.com/

你可能感兴趣的文章
链式队列(c语言)
查看>>
ARIMA模型---时间序列分析---温度预测
查看>>
Windows10下安装Maven以及Eclipse安装Maven插件 + 创建Maven项目
查看>>
性能测试学习第七天_脚本概要
查看>>
socket网络编程基础模块
查看>>
滚动表格固定表头和左边栏
查看>>
UVA 10859 Placing Lampposts 树形DP
查看>>
Shiro
查看>>
来上海八年了,有时候有些事还是会让我感到惊艳
查看>>
bzoj 3223 裸splay
查看>>
nchar、char、varchar与nvarchar区别
查看>>
iOS 之 socket 与 http
查看>>
python自学2018/03/21-实时刷新进度条小程序
查看>>
个人笔记--------错误解决记录-------Servlet.init() for servlet rest threw exception
查看>>
团队-象棋游戏-项目进度
查看>>
两列布局的基本思路
查看>>
python logging 重复写日志问题
查看>>
RAC4——架构和变化
查看>>
jQuery基础与实例
查看>>
A girl
查看>>