当涉及到多个表的查询时,常常需要使用连接查询(JOIN)来检索数据。以下是一些多表查询的示例语句:
-
内连接查询(INNER JOIN): 返回两个表中符合连接条件的记录。
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
-
左连接查询(LEFT JOIN): 返回左表中的所有记录以及右表中符合连接条件的记录。
SELECT Orders.OrderID, Customers.CustomerName FROM Orders LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
-
右连接查询(RIGHT JOIN): 返回右表中的所有记录以及左表中符合连接条件的记录。
SELECT Orders.OrderID, Customers.CustomerName FROM Orders RIGHT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
-
全连接查询(FULL JOIN): 返回左右表中所有记录,如果左表或右表中没有匹配的记录,则将 NULL 值填充。
SELECT Orders.OrderID, Customers.CustomerName FROM Orders FULL JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
-
自连接查询(Self Join): 在同一表中连接两次以比较不同的行。
SELECT e1.EmployeeName, e2.EmployeeName FROM Employees e1, Employees e2 WHERE e1.ManagerID = e2.EmployeeID;
-
交叉连接查询(CROSS JOIN): 返回两个表的笛卡尔积。
SELECT Customers.CustomerName, Orders.OrderID FROM Customers CROSS JOIN Orders;