---
title: "内联接查询 | OceanBase 文档中心"
description: 内联接查询 内联接（INNER JOIN）是两个或多个表的联接，用于返回满足联接条件的多个表数据。内联接又称为简单联接。 内联接语法 内联接默认 JOIN 返回的结果会满足 ON 后面的联接条件，通常会省略关键字 INNER 。 JOIN 前后的表分别称之为左表和右表， ON 里的条件描述的是左表和右表的联接条件和过…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 3.2.3 企业版 LTS

# 内联接查询

更新时间：2023-07-18 17:25:59

内联接（INNER JOIN）是两个或多个表的联接，用于返回满足联接条件的多个表数据。内联接又称为简单联接。

## 内联接语法

内联接默认 `JOIN` 返回的结果会满足 `ON` 后面的联接条件，通常会省略关键字 `INNER`。`JOIN` 前后的表分别称之为左表和右表，`ON` 里的条件描述的是左表和右表的联接条件和过滤条件。

内联接的 SQL 语法格式如下：

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

```

如果同时使用 `WHERE` 和 `ORDER BY` 子句，则SQL 返回的结果会在 `JOIN` 结果的基础上再经过 `WHERE` 后的查询条件进行过滤，以及根据 `ORDER BY` 后的列排序进行结果排序。

如果没有 `ON` 子句，那么 `INNER JOIN` 返回的就是左表和右表的全部数据，称为笛卡儿积。

相同的联接条件下，`ON` 子句也可以由 `WHERE` 子句代替实现内联接查询。语法如下：

```sql
 SELECT select_list FROM table_name1，table_name2 [ WHERE query_condition ]

```

## 示例

### 示例 1：带有联接条件查询

创建示例表并插入适当数据，并根据带有联接条件的方式进行数据查询。

1. 创建 `tbl1` 表。

   ```unknow
   obclient> CREATE TABLE tbl1(id NUMBER NOT NULL PRIMARY KEY, name VARCHAR(50));
   Query OK, 0 rows affected

   ```
 2. 创建 `tbl2` 表。

   ```unknow
   obclient> CREATE TABLE tbl2(id NUMBER NOT NULL PRIMARY KEY, name VARCHAR(50));
   Query OK, 0 rows affected

   ```
 3. `tbl1` 表插入数据。

   ```unknow
   obclient> INSERT INTO tbl1 VALUES(1,'A1'),(2,'B1'),(4,'D1'),(6,'F1'),(8,'H1'),(10,'J1');
   Query OK, 6 rows affected
   Records: 6  Duplicates: 0  Warnings: 0

   ```
 4. `tbl2` 表插入数据。

   ```unknow
   obclient> INSERT INTO tbl2 VALUES(1,'B2'),(3,'C2'),(6,'F2'),(9,'I2');
   Query OK, 4 rows affected
   Records: 4  Duplicates: 0  Warnings: 0

   ```
 5. 查询出 `tbl1` 表与 `tbl2` 表中 `id` 相同的 `id` 列与 `name` 列数据。

   ```unknow
   obclient> SELECT tbl1.id, tbl1.name, tbl2.id, tbl2.name FROM tbl1 JOIN tbl2
             ON tbl1.id=tbl2.id;
   +----+------+----+------+
   | ID | NAME | ID | NAME |
   +----+------+----+------+
   |  1 | A1   |  1 | B2   |
   |  6 | F1   |  6 | F2   |
   +----+------+----+------+
   2 rows in set

   ```
 6. 通过内连接查询出 `tbl1` 表与 `tbl2` 表中 `id` 相同的 `id` 列与 `name` 列数据。

   ```unknow
   obclient> SELECT tbl1.id, tbl1.name, tbl2.id, tbl2.name FROM tbl1
             INNER JOIN tbl2 ON tbl1.id=tbl2.id;
   +----+------+----+------+
   | ID | NAME | ID | NAME |
   +----+------+----+------+
   |  1 | A1   |  1 | B2   |
   |  6 | F1   |  6 | F2   |
   +----+------+----+------+
   2 rows in set

   ```
 7. 通过 WHERE 条件查询出 `tbl1` 表与 `tbl2` 表中 `id` 相同的 `id`、`name` 列的数据。

   ```unknow
   obclient> SELECT tbl1.id, tbl1.name, tbl2.id, tbl2.name FROM tbl1,tbl2
             WHERE tbl1.id=tbl2.id;
   +----+------+----+------+
   | id | name | id | name |
   +----+------+----+------+
   |  1 | A1   |  1 | B2   |
   |  6 | F1   |  6 | F2   |
   +----+------+----+------+
   2 rows in set

   ```

### 示例 2：无联接条件查询

根据上述已创建的表及数据，通过无条件联接的方式，查询出 `tbl1` 表与 `tbl2` 表的 `id` 列与 `name` 列的数据。

```unknow
obclient> SELECT tbl1.id, tbl1.name, tbl2.id, tbl2.name FROM tbl1 INNER JOIN tbl2;
+----+------+----+------+
| id | name | id | name |
+----+------+----+------+
|  1 | A1   |  1 | B2   |
|  1 | A1   |  3 | C2   |
|  1 | A1   |  6 | F2   |
|  1 | A1   |  9 | I2   |
|  2 | B1   |  1 | B2   |
|  2 | B1   |  3 | C2   |
|  2 | B1   |  6 | F2   |
|  2 | B1   |  9 | I2   |
|  4 | D1   |  1 | B2   |
|  4 | D1   |  3 | C2   |
|  4 | D1   |  6 | F2   |
|  4 | D1   |  9 | I2   |
|  6 | F1   |  1 | B2   |
|  6 | F1   |  3 | C2   |
|  6 | F1   |  6 | F2   |
|  6 | F1   |  9 | I2   |
|  8 | H1   |  1 | B2   |
|  8 | H1   |  3 | C2   |
|  8 | H1   |  6 | F2   |
|  8 | H1   |  9 | I2   |
| 10 | J1   |  1 | B2   |
| 10 | J1   |  3 | C2   |
| 10 | J1   |  6 | F2   |
| 10 | J1   |  9 | I2   |
+----+------+----+------+
24 rows in set

```

### 示例 3：组合条件查询

根据上述已创建的表及数据，通过组合条件的方式进行数据查询。

- 通过内联接 + 带有 AND 联接条件的方式进行数据查询。

  ```unknow
  obclient> SELECT tbl1.id, tbl1.name, tbl2.id, tbl2.name FROM tbl1
            INNER JOIN tbl2 ON tbl1.id=tbl2.id AND tbl1.id=6;
  +----+------+----+------+
  | id | name | id | name |
  +----+------+----+------+
  |  6 | F1   |  6 | F2   |
  +----+------+----+------+
  1 row in set

  ```
 - 通过内联接 + 带有 WHERE 联接条件的方式进行数据查询。

  ```unknow
  obclient> SELECT tbl1.id, tbl1.name, tbl2.id, tbl2.name FROM tbl1
            INNER JOIN tbl2 ON tbl1.id=tbl2.id WHERE tbl1.id=6;
  +----+------+----+------+
  | id | name | id | name |
  +----+------+----+------+
  |  6 | F1   |  6 | F2   |
  +----+------+----+------+
  1 row in set

  ```
 - 通过带有 WHERE 联接条件 + 带有 AND 联接条件的方式进行数据查询。

  ```unknow
  obclient> SELECT tbl1.id, tbl1.name, tbl2.id, tbl2.name FROM tbl1,tbl2
            WHERE tbl1.id=tbl2.id AND tbl1.id=6;
  +----+------+----+------+
  | id | name | id | name |
  +----+------+----+------+
  |  6 | F1   |  6 | F2   |
  +----+------+----+------+
  1 row in set

  ```
 - 通过内联接条件 + 带有 ORDER BY 排序的方式进行数据查询。

  ```unknow
  obclient> SELECT tbl1.id, tbl1.name, tbl2.id, tbl2.name FROM tbl1
            INNER JOIN tbl2 ON tbl1.id=tbl2.id ORDER BY tbl1.id DESC;
  +----+------+----+------+
  | id | name | id | name |
  +----+------+----+------+
  |  6 | F1   |  6 | F2   |
  |  1 | A1   |  1 | B2   |
  +----+------+----+------+
  2 rows in set

  ```

 上一篇 下一篇 ![有帮助](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) 咨询热线
