簡體   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