SQL右连接【RIGHT JOIN】详解及图解

SQL RIGHT JOIN 连接两个表并根据一个条件获取行,该条件在两个表中都匹配(在下面的语法中提到的 JOIN 子句之前和之后),并且不匹配的行也可以从 JOIN 子句之后编写的表中可用(在下面的语法中提到)。

SQL Right Join 的图示:

语法:

SELECT *
FROM table1
RIGHT [ OUTER ] JOIN table2
ON table1.column_name=table2.column_name;

SQL RIGHT join 从 table2 中获取一组完整的记录,即 JOIN 子句后面最右边的表,以及 table1 中的匹配记录(取决于可用性)。当不进行匹配时,结果为左侧为 NULL。

语法图 - SQL Right Join

SQL 右联接或右外联接的示例

样品表:食品(foods)

+---------+--------------+-----------+------------+
| ITEM_ID | ITEM_NAME    | ITEM_UNIT | COMPANY_ID |
+---------+--------------+-----------+------------+
| 1       | Chex Mix     | Pcs       | 16         |
| 6       | Cheez-It     | Pcs       | 15         |
| 2       | BN Biscuit   | Pcs       | 15         |
| 3       | Mighty Munch | Pcs       | 17         |
| 4       | Pot Rice     | Pcs       | 15         |
| 5       | Jaffa Cakes  | Pcs       | 18         |
| 7       | Salt n Shake | Pcs       |            |
+---------+--------------+-----------+------------+

示例表:公司(company)

+------------+---------------+--------------+
| COMPANY_ID | COMPANY_NAME  | COMPANY_CITY |
+------------+---------------+--------------+
| 18         | Order All     | Boston       |
| 15         | Jack Hill Ltd | London       |
| 16         | Akas Foods    | Delhi        |
| 17         | Foodies.      | London       |
| 19         | sip-n-Bite.   | New York     |
+------------+---------------+--------------+

要从公司表中获取公司 ID、公司名称和公司城市列,以及从食品表中获取公司 ID、项目名称列,在与这些提到的表进行 OUTER JOIN 后,可以使用以下 SQL 语句:

SQL代码

SELECT company.company_id,company.company_name,
company.company_city,foods.company_id,foods.item_name
FROM   company
RIGHT JOIN foods
ON company.company_id = foods.company_id;

解释:

此 SQL 语句将返回 foods 表中的所有行,并且仅返回 company 表中联接字段相等的行,如果 ON 子句与 company 表中的任何记录不匹配,则联接仍将返回行,但 company 表的每一列中都返回 NULL。

输出:

COMPANY_ID COMPANY_NAME              COMPANY_CITY              COMPANY_ID ITEM_NAME
---------- ------------------------- ------------------------- ---------- --------------
18         Order All                 Boston                    18         Jaffa Cakes
15         Jack Hill Ltd             London                    15         Pot Rice
15         Jack Hill Ltd             London                    15         BN Biscuit
15         Jack Hill Ltd             London                    15         Cheez-It
16         Akas Foods                Delhi                     16         Chex Mix
17         Foodies.                  London                    17         Mighty Munch
                                                                          Salt n Shake

此处所示的上述 SQL 语句的输出是使用 Oracle Database 10g Express Edition 获取的

上述示例的图示:

注:本文转载于SQL右连接【RIGHT JOIN】详解及图解 —技术博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值