在 SQL 中,我们可以基于公共字段或关系联接三个表。
示例
SELECT
Customers.first_name,
Orders.item,
Shippings.status
FROM Customers
LEFT JOIN Orders ON Customers.customer_id = Orders.customer_id
LEFT JOIN Shippings ON Orders.customer_id = Shippings.customer
这里,SQL 查询对 Customers、Orders 和 Shippings 表执行 LEFT JOIN
操作。
然后它显示 Customers 表中的 first_name 字段,Orders 表中的 item 字段,以及 Shippings 表中的 status 字段。
联接三个表
最常见的联接类型是 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN。
我们来看一个使用 INNER JOIN
的例子。
SELECT
Customers.first_name,
Customers.last_name,
Orders.item,
Shippings.status
FROM
Customers
INNER JOIN Orders ON Customers.customer_id = Orders.customer_id
INNER JOIN Shippings ON Orders.customer_id = Shippings.customer
这里,SQL 命令
- 将 Customers 表与 Orders 表联接,其中它们的
customer_id
字段匹配。 - 将 Orders 表与 Shippings 表联接,其中 Orders 中的
customer_id
与 Shippings 中的customer
字段匹配。 - 从 Customers 表中选择客户的名字和姓氏。
- 从 Orders 表中选择商品。
- 从 Shippings 表中选择配送状态。
使用 AS 别名联接三个 SQL 表
我们可以将 AS 别名与表名一起使用,使查询简短明了。例如,
SELECT
c.first_name,
c.last_name,
o.item,
o.amount,
s.status
FROM
Customers c
JOIN Orders o ON c.customer_id = o.customer_id
JOIN Shippings s ON c.customer_id = s.customer
这里,SQL 命令联接了三个表:Customers、Orders 和 Shippings。Customers 表别名为 c
,Orders 表别名为 o
,Shippings 表别名为 s
。
这使得我们的查询简短明了。