Day 16 -资料查询语言 LEFT JOIN 和 RIGHT JOIN!

LEFT JOIN 可以用来建立左外部连接,查询的 SQL 叙述句 LEFT JOIN 左侧资料表 (table_name1) 的所有记录都会加入到查询结果中,即使右侧资料表 (table_name2) 中的连接栏位没有符合的值也一样。
相对於 LEFT JOIN,RIGHT JOIN 可以用来建立右外部连接,查询的 SQL 叙述句 RIGHT JOIN 右侧资料表 (table_name2) 的所有记录都会加入到查询结果中,即使左侧资料表 (table_name1) 中的连接栏位没有符合的值也一样。

LEFT JOIN 语法 和 RIGHT JOIN 语法

SELECT table_column1, table_column2...
FROM table_name1
LEFT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name;
SELECT table_column1, table_column2···
FROM table_name1
RIGHT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name;

有些资料库的语法会是 LEFT OUTER JOIN ,RIGHT OUTER JOIN。。

LEFT JOIN 和 RIGHT JOIN 实例解说

客户资料表(guest)

顾客编号(Primary Key) 顾客姓名 住址 电话
01 李大华 桃园 09111211
02 陈大名 高雄 09232323
03 陈阿美 新北 09226541
04 林大帅 桃园 09232489

订单资料表(ORDER)

订单编号(Primary Key) 顾客编号 商品名称 价格 日期
01 01 汉堡 70 2021-01-03
02 02 薯条 50 2021-05-15
03 04 可乐 40 2021-11-01
04 04 拉面 230 2021-12-12
05 04 鸡块 50 2021-12-12
06 06 馒头 20 2021-12-31

现在我们想查询所有客户与其订单状况的资料,我们可以作一个 LEFT JOIN 查询:

SELECT guest.顾客姓名, ORDER.订单编号
FROM guest
LEFT JOIN ORDER
ON guest.顾客编号=ORDER.顾客编号;

查询结果如下:

顾客姓名 订单编号
李大华 01
陈大名 02
陈阿美 null
林大帅 03
林大帅 04
林大帅 05

LEFT JOIN 会返回左侧资料表中所有资料列,就算没有符合连接条件,而右侧资料表中如果没有匹配的资料值就会显示为 NULL。


现在我们想查询所有订单与相应的客户之资料,我们可以作一个 RIGHT JOIN 查询:

SELECT guest.顾客姓名, ORDER.订单编号
FROM guest
RIGHT JOIN ORDER
ON guest.顾客编号=ORDER.顾客编号;

查询结果如下:

顾客姓名 订单编号
李大华 01
陈大名 02
林大帅 03
林大帅 04
林大帅 05
null 06

RIGHT JOIN 会返回右侧资料表中所有资料列,就算是没有符合连接条件,而左侧资料表中如果没有匹配的资料值就会显示为 NULL。
下篇见


<<:  [Day 15]呐呐,还有一半别想跑(前端篇)

>>:  Day30 切版笔记 - 文字排版

自动化测试,让你上班拥有一杯咖啡的时间 | Day 9 - 如何上传图片

此系列文章会同步发文到个人部落格,有兴趣的读者可以前往观看喔。 在 E2E 测试中,不仅有选取元素...

Day 8 [Python ML、特徵工程] 基准模型(Baseline Model)

前言 今天开始是新的章节,因此也有新的资料集 Kickstarter Projects 在开始之前要...

[Day 13] 从 tensorflow.keras 开始的 EfficientNet 生活

0. 进度条 模型 进度 VGG Net 完成 ResNet 完成 DensNet 完成 Mobil...

Day 18 (Xd)

1.开启自己手机的解析度面板 安卓计算: 495ppi-->对应的dpi范围为480以上--&...

Day 23 ASP.NET Core Identity 说明

前面有说到UserAuthentication()跟UserAuthorization(),这两个的...