English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL JOIN 关键字使用方法及示例

Referência de Palavras-chave SQL

INNER JOIN

INNER JOIN命令返回两个表中具有匹配值的行。

以下SQL选择带有客户信息的所有订单:

SELECT Orders.OrderID, Customers.CustomerName FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

Atenção:A palavra-chave INNER JOIN selecciona todas as linhas das duas tabelas desde que haja correspondências entre as colunas. Se houver registros não correspondentes na tabela 'Encomendas (Orders)' e na tabela 'Clientes (Customers)', essas encomendas não serão exibidas!

A seguinte consulta SQL selecciona todas as encomendas que contêm informações de clientes e transportadoras:

SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID);
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

LEFT JOIN

A instrução LEFT JOIN retorna todas as linhas da tabela esquerda e as linhas correspondentes da tabela direita. Se não houver correspondência, os resultados da direita serão NULL.

A seguinte consulta SQL selecciona todos os clientes e todas as encomendas que eles podem possuir:

 SELECT Customers.CustomerName, Orders.OrderID 
 FROM Customers
 LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
 ORDER BY Customers.CustomerName;

Atenção:A palavra-chave LEFT JOIN retorna todas as linhas da tabela esquerda (Tabela de clientes Customers), mesmo que não haja correspondência na tabela direita (Tabela de encomendas Orders).

RIGHT JOIN

A instrução RIGHT JOIN retorna todas as linhas da tabela direita e os registros correspondentes da tabela esquerda. Se não houver correspondência, os resultados da esquerda serão NULL.

A seguinte consulta SQL retornará todos os funcionários e todas as encomendas que eles podem ter feito:

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;

Atenção:A palavra-chave RIGHT JOIN retorna todos os registros da tabela direita (Funcionários Employees), mesmo que não haja correspondência na tabela esquerda (Encomendas Orders).

FULL OUTER JOIN

FULL OUTER JOIN retorna todas as linhas quando há itens correspondentes na tabela esquerda ou direita.

A seguinte consulta SQL selecciona todos os clientes e todas as encomendas:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN  
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Atenção:FULL OUTER JOIN retorna todas as linhas da tabela esquerda (Clientes Customers), e todas as linhas da tabela direita (Pedidos Orders). Se algumas linhas no 'Clientes Customers' não tiverem correspondente no 'Pedidos Orders', ou se algumas linhas no 'Pedidos Orders' não tiverem correspondente no 'Clientes Customers', essas linhas também serão listadas.

Referência de Palavras-chave SQL