📜  PostgreSQL – 内连接(1)

📅  最后修改于: 2023-12-03 15:33:44.851000             🧑  作者: Mango

PostgreSQL – 内连接

内连接(Inner Join)是 PostgresSQL 中最常用的连接类型之一。它将两个表中满足指定条件的行组合在一起,只返回两个表中都存在的行。这种连接通常用于处理多个表的查询,以便从多个表中获取所需的数据。

语法

内连接的语法如下:

SELECT column(s)
FROM table1
INNER JOIN table2
ON table1.column = table2.column;

该语法有以下几个部分:

  • SELECT:要查询的列名
  • FROM:要连接的表
  • INNER JOIN:指定连接类型为内连接
  • ON:指定连接两个表的条件
例子

我们来看一个使用内连接的例子,假设我们有两个表,一个是 customers,另一个是 orders。这两个表的结构如下:

customers
+----+-------------+-----------+
| id | name        | email     |
+----+-------------+-----------+
|  1 | John Smith  | john@abc  |
|  2 | Jane Doe    | jane@abc  |
|  3 | Bob Johnson | bob@abc   |
+----+-------------+-----------+

orders
+----+-------------+-----------+
| id | customer_id | order_date|
+----+-------------+-----------+
|  1 | 1           | 2019-01-01|
|  2 | 1           | 2019-01-02|
|  3 | 2           | 2019-01-03|
+----+-------------+-----------+

我们想要查询所有客户的订单信息,查询结果应该如下:

+-------------+-----------+------------+
| name        | email     | order_date |
+-------------+-----------+------------+
| John Smith  | john@abc  | 2019-01-01 |
| John Smith  | john@abc  | 2019-01-02 |
| Jane Doe    | jane@abc  | 2019-01-03 |
+-------------+-----------+------------+

我们可以使用以下 SQL 语句来实现:

SELECT customers.name, customers.email, orders.order_date
FROM customers
INNER JOIN orders
ON customers.id = orders.customer_id;

这个 SQL 语句将 customers 表和 orders 表进行内连接,并且连接条件为 customers.id = orders.customer_id,即将两个表中 idcustomer_id 相等的行筛选出来。最后,我们用 SELECT 子句指定要查询的列名,即 customers.namecustomers.email,和 orders.order_date

总结

内连接是 PostgreSQL 中最常用的连接类型之一,它将两个表中满足指定条件的行组合在一起,只返回两个表中都存在的行。内连接通常用于多表查询。