SQL JOIN 关键字

INNER JOIN

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

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

实例
  1. SELECT Orders.OrderID, Customers.CustomerName
  2. FROM Orders
  3. INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

注意:只要两个表中的列之间存在匹配,INNER JOIN 关键字就会选择这两个表中的所有行。如果 "Orders" 表中的记录与 "Customers" 中的记录不匹配,则不会显示这些订单!

以下 SQL 语句选择包含客户和发货人信息的所有订单:

实例
  1. SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
  2. FROM ((Orders
  3. INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
  4. INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

LEFT JOIN

LEFT JOIN 命令返回左表中的所有行,以及右表中的匹配行。如果没有匹配项,则结果从右侧为 NULL

以下 SQL 将选择所有客户以及他们可能拥有的任何订单:

实例
  1. SELECT Customers.CustomerName, Orders.OrderID
  2. FROM Customers
  3. LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
  4. ORDER BY Customers.CustomerName;

注意:LEFT JOIN关键字返回左表(Customers)中的所有记录,即使右表(Orders)中没有匹配项。


RIGHT JOIN

RIGHT JOIN 命令返回右表中的所有行,以及左表中的匹配记录。当没有匹配项时,左侧的结果为空。

以下 SQL 将返回所有员工以及他们可能下的任何订单:

实例
  1. SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
  2. FROM Orders
  3. RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
  4. ORDER BY Orders.OrderID;

注意:RIGHT JOIN关键字返回右表(Employees)中的所有记录,即使左表(Orders)中没有匹配项。


FULL OUTER JOIN

FULL OUTER JOIN 当左表或右表中存在匹配项时,该命令返回所有行。

以下 SQL 语句选择所有客户和所有订单:

  1. SELECT Customers.CustomerName, Orders.OrderID
  2. FROM Customers
  3. FULL OUTER JOIN OrdersON Customers.CustomerID=Orders.CustomerID
  4. ORDER BY Customers.CustomerName;

注意:FULL OUTER JOIN关键字返回左表(Customers)中的所有行,以及右表(Orders)中的所有行。如果“客户”中有行在 "Orders" 中没有匹配项,或者 "Customers" 中有行在“客户”中没有匹配项,那么这些行也将列出。

分类导航