簡體   English   中英

哪個表恰好是JOIN語句(SQL)中的“左”表和“右”表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM