[英]Which table exactly is the “left” table and “right” table in a JOIN statement (SQL)?
什么使得給定的表成為左表?
該表是否在查詢的“發件人”部分中指示?
或者,它是左表,因為它位於=運算符的左側?
以下是等效的
SELECT *
FROM left_table
LEFT JOIN right_table ON left_table.right_id = right_table.id
和
SELECT *
FROM left_table
LEFT JOIN right_table on right_table.left_id = left_table.id
???
謝謝
Left表是select中的第一個表。 是的,你的兩個例子是等價的。
右表始終是您要加入的表。 所以,是的,你的兩個陳述都是等同的。
JOIN [Table] ON ...
[表]始終是正確的表格。
大致“左”是從左到右閱讀整個FROM子句中首先出現的所有內容的結果 - 包括其他JOIN,子查詢,VIEW和STORED PROCEDURES的結果。
兩個SQL語句都是等價的,因為JOIN
子句的ON
部分的=
運算符是對稱的 (如果a = b然后b = a),那么無論順序如何,結果都是相同的。
常規連接僅顯示JOIN的ON子句為真的行,而如果條件為假,LEFT JOIN還顯示“left”的記錄(對於SELECT中存在的“right”,任何列顯示NULL)。
例如:
-- People: -- Car
id | name owner_id | model
---+------------ ---------+------------
1 | Paul 1 | Ferrari
2 | Nancy 2 | Porsche
3 | Arthur NULL | Lamborghini
4 | Alfred 10 | Maserati
> select people.name, car.model from people join car on car.owner_id=people.id;
name | model
---------+--------------
Paul | Ferrari
Nancy | Porsche
2 record(s) found
> select people.name, car.model from people left join car on
car.owner_id=people.id;
name | model
---------+--------------
Paul | Ferrari
Nancy | Porsche
Arthur | NULL
Alfred | NULL
4 record(s) found
> select people.name, car.model from people left join car on
people.id = car.owner_id;
name | model
---------+--------------
Paul | Ferrari
Nancy | Porsche
Arthur | NULL
Alfred | NULL
4 record(s) found
有關連接的詳細演練,請參閱此內容: http : //en.wikipedia.org/wiki/Join_(SQL)
是的,這兩個陳述都是等價的:-)
是的,它由JOIN運算符一側確定,表格出現在。 你的兩個例子確實是等價的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.