---
title: "RIGHT JOIN - OB Cloud 云数据库 master | OceanBase 文档中心"
description: RIGHT JOIN 右联接（RIGHT JOIN）表示右外联接，使用该语句可以返回右表中的所有行，不包括左表中不匹配的行。 背景信息 外联接（OUTER JOIN）是使用比较运算符对两个表中的数据进行比较，联接结果不仅包含符合联接条件的行，同时也包含不符合条件的行。 外联接包括全联接（FULL JOIN）、左联接（…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*qbZXRo_94ZEAAAAAAAAAAAAADiGDAQ/original) OB Cloud 云数据库

# RIGHT JOIN

更新时间：2026-06-04 10:42:54

右联接（RIGHT JOIN）表示右外联接，使用该语句可以返回右表中的所有行，不包括左表中不匹配的行。

## 背景信息

外联接（OUTER JOIN）是使用比较运算符对两个表中的数据进行比较，联接结果不仅包含符合联接条件的行，同时也包含不符合条件的行。

外联接包括全联接（FULL JOIN）、左联接（LEFT JOIN）和右联接（RIGHT JOIN）。外联接返回满足联接条件的所有行，同时从一个表返回没有使用的行，在另一个表相应位置填充 `NULL`。

本文主要提供右联接的示例指导，全联接相关示例请参见 [全联接](https://www.oceanbase.com/docs/common-oceanbase-cloud-1000000000057890)，左联接相关示例请参见 [左联接](https://www.oceanbase.com/docs/common-oceanbase-cloud-1000000006083091)。

## RIGHT JOIN 语法

外联接语句中一般包括左表和右表，出现在 `JOIN` 子句最左边的为左表，出现在 `JOIN` 子句最右边的为右表。

RIGHT JOIN 的语法格式如下：

```sql
SELECT select_list FROM table_name1 RIGHT JOIN table_name2 ON join_condition
[ WHERE query_condition ]
[ ORDER BY column_list ];

```

其中，`table_name1` 为左表，`table_name2` 为右表。

## 示例

创建示例表并插入适当数据。

```sql
obclient [SYS]> CREATE TABLE tbl_a(id NUMBER NOT NULL PRIMARY KEY, name VARCHAR2(50));
Query OK, 0 rows affected

obclient [SYS]> CREATE TABLE tbl_b(num NUMBER NOT NULL PRIMARY KEY, value NUMBER);
Query OK, 0 rows affected

obclient [SYS]> INSERT INTO tbl_a VALUES(1,'ab'),(2,'cd'),(3,'ef'),(4,'gh');
Query OK, 6 rows affected
Records: 6  Duplicates: 0  Warnings: 0

obclient [SYS]> INSERT INTO tbl_b VALUES(1,1001),(3,1003),(5,1005);
Query OK, 4 rows affected
Records: 4  Duplicates: 0  Warnings: 0

```

### 简单右联接查询

如果 `JOIN` 返回的数据除了符合联接条件和过滤条件的数据外，还包括右表里满足右表的过滤条件但不满足联接条件的数据时，就可以使用右联接。右联接返回的结果里属于左表的数据如果不存在，则该列返回 `NULL`。

示例 1：将表 `tbl_a` 和表 `tbl_b` 执行右联接查询，并获取返回结果。

```sql
obclient [SYS]> SELECT * FROM tbl_a;
+----+------+
| ID | NAME |
+----+------+
|  1 | ab   |
|  2 | cd   |
|  3 | ef   |
|  4 | gh   |
+----+------+
4 rows in set

obclient [SYS]> SELECT * FROM tbl_b;
+-----+-------+
| NUM | VALUE |
+-----+-------+
|   1 |  1001 |
|   3 |  1003 |
|   5 |  1005 |
+-----+-------+
3 rows in set

obclient> SELECT tbl_a.id, tbl_a.name, tbl_b.num, tbl_b.value FROM tbl_a RIGHT JOIN tbl_b ON tbl_a.id=tbl_b.num;
+------+------+--------+-------+
| ID   | NAME | NUM    | VALUE |
+------+------+--------+-------+
|    1 | ab   |      1 |  1001 |
|    3 | ef   |      3 |  1003 |
| NULL | NULL |      5 |  1005 |
+------+------+--------+-------+
3 rows in set

```

### 右联接 WHERE 子句对联接结果进行过滤

您可以使用右联接获取联接结果，再使用 `WHERE` 子句对联接结果进行过滤。

示例 2：将表 `tbl_a` 和表 `tbl_b` 执行右联接查询后，返回 `tbl_b` 表中 `value=1003` 的数据。

```sql
obclient> SELECT t1.id, t1.name, t2.id, t2.name FROM t1
          LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id IS NOT NULL;
+----+------+----+------+
| ID | NAME | ID | NAME |
+----+------+----+------+
|  1 | A1   |  1 | B2   |
|  2 | B1   | NULL | NULL |
|  4 | D1   | NULL | NULL |
|  6 | F1   |  6 | F2   |
|  8 | H1   | NULL | NULL |
| 10 | J1   | NULL | NULL |
+----+------+----+------+
6 rows in set

```

## 相关文档

- [INNER JOIN](https://www.oceanbase.com/docs/common-oceanbase-cloud-1000000006083090)
 - [FULL JOIN](https://www.oceanbase.com/docs/common-oceanbase-cloud-1000000000057890)
 - [LEFT JOIN](https://www.oceanbase.com/docs/common-oceanbase-cloud-1000000006083091)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
