繁体   English   中英

解释在JOIN语句中选择“FROM”的表

[英]Explain which table to choose “FROM” in a JOIN statement

我是SQL的tables.columns ,如果我使用点符号选择我想要的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;

INNER JOIN的顺序无关紧要。

但是,它在LEFT JOINRIGHT JOIN LEFT JOINFROM子句中的表是主表; 结果将包含从此表中选择的每一行,而LEFT JOIN表中指定的行可能会丢失(结果中这些列将为NULL )。 RIGHT JOIN类似但反过来:在FROM中命名的表中可能缺少行。

例如,如果您将查询更改为使用LEFT JOIN ,您将看到没有订单的客户。 但是如果您交换了表的顺序并使用了LEFT JOIN ,那么您将看不到这些客户。 您会看到没有客户的订单(尽管这些行可能不存在)。

from语句引用的是连接而不是表。 表的连接将创建一个集合,您将从中选择列。

对于inner joinfrom子句中的哪个表以及join子句中的哪个表无关紧要。 对于outer join它当然很重要,因为允许outer join的表具有“缺失”记录。

内部连接无关紧要:优化器将确定读取表的正确顺序,无论您选择何种顺序。

对于定向外连接,它确实很重要,因为它们不对称。 您可以选择要在左外连接中保留第一个FROM表的所​​有行的表; 对于右外连接,它是另一种方式。

对于完全外部连接,它无关紧要,因为完全外部连接中的表彼此对称使用。

在订购无关紧要的情况下,您选择的顺序对于SQL语句的读者来说是“自然的”,无论这对您的模型意味着什么。 SQL查询很快变得难以阅读,因此对于查询的人类读者来说,正确的表排序非常重要。

在您当前的示例中,from运算符可以应用于两个表。

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers,Orders
WHERE Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

- >会像你的代码一样工作

逗号将加入两个表。

从只是意味着您从哪个表中检索数据。

在您的示例中,您使用不同的语法加入了两个表。 它也可能是:

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

所有编写的代码都会生成相同的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM