【发布时间】:2014-10-03 18:28:13
【问题描述】:
我是 SQL 新手,如果我使用点表示法选择我想要的 tables.columns,我无法理解为什么在 JOIN 语句中有 FROM 关键字。我从两者中选择哪张桌子有关系吗?我在 w3schools 定义中没有看到任何解释,其中表是 FROM 表。在下面的示例中,我如何知道为FROM 选择哪个表?既然我基本上已经选择了要选择的table.column,可以吗?
例如:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
【问题讨论】:
-
它们都是来自表...,您可以说来自订单和连接客户,如果是内部连接,查询将返回相同的结果。在左连接中,“来自”表是左表。当我开始使用 sql 时,这让我很困惑,所以请注意这一点,左连接与左外连接是一样的,唯一的区别是语法
-
是的。它可以是任何一个。在您的示例中,可以交换两个表名,并且返回的行相同。 (表名的位置确实重要的是“外部”连接操作,即“a LEFT JOIN b”等价于“b RIGHT JOIN a”,但它不同于“a RIGHT JOIN b”。跨度>
-
就
FROM表的定义而言:您实际选择“来自”的是连接操作的结果,而不是一个表或另一个表。 SQL 指定的是对两个表“Customers JOIN Orders ON ...”的“连接”操作。查询正在“从”连接操作的结果中选择。 (相等比较中表达式的顺序也不重要。a.col = b.col相当于指定b.col = a.col;相等比较运算符的一个属性。)限定 all 列是最佳实践查询中的引用(如您的示例所示。) -
SELECT 是“来自”FROM 之后所有内容的结果。 FROM 不仅仅是它之后的第一个表。