我应该考虑加入哪些团体?

With what groupings am I supposed to think about joins?

我在看例子

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

来自 W3School,我想知道我应该如何在脑海中对这些条款进行分组。据我了解,每个 SQL 查询 return 都是 table,并且查询中的子句本身可能 return 是 table。所以我想到了整个

Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID

作为一个 table,我通过应用 SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate 来 return 它的子 table。这是思考问题的正确方法吗?

您可以将每个查询想象成一个新的临时 table 和您想要的结果。这一个从 OrdersCustomers 中获取行,根据两个 table 中的 CustomerID 字段匹配它们(连接的 on 子句),然后 returns 只是 Orders 中的几个字段(OrderIDOrderDate)和 Customers 中的一个字段(CustomerName)。

基本上,您将返回一个新的 table,其中包含 SELECT 语句中的所有列。如果将查询简化为:

SELECT OrderID, OrderDate
FROM Orders

您将获得整个订单的打印输出 table,但只有您指定的两列。

通过 INNER JOIN,您将筛选出结果以仅包含 CustomerID 与 Customers table 中具有相同 CustomerID 的类似行相匹配的订单。在您的 SELECT 语句中,您添加了一列,显示与这些订单匹配的客户姓名。

所以 INNER JOIN 的 ON 部分只是将客户与他们各自的订单相匹配。 SELECT 部分是您使用您感兴趣的三列创建新输出 table 的地方。

有帮助吗?