什么使得给定的表成为左表?
该表是否在查询的“发件人”部分中显示?
或者,它是左表,因为它位于=运算符的左侧?
以下是等效的
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
???
由于
答案 0 :(得分:37)
Left表是select中的第一个表。是的,你的两个例子是等价的。
答案 1 :(得分:10)
右表始终是您要加入的表。所以,是的,你的两个陈述都是等同的。
JOIN [Table] ON ...
[表格]总是正确的表格。
答案 2 :(得分:6)
大致“左”是从左到右阅读整个FROM子句中首先出现的所有内容的结果 - 包括其他JOIN,子查询,VIEW和STORED PROCEDURES的结果。
两个SQL语句都是等效的,因为=
子句的ON
部分的JOIN
运算符是symmetric(如果a = b则b = a)所以无论顺序如何,结果都是一样的。
常规连接仅显示JOIN的ON子句为真的行,而如果条件为假,则LEFT JOIN还显示“left”的记录(对于来自“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
答案 3 :(得分:4)
有关联接的详细演练,请参阅此内容:http://en.wikipedia.org/wiki/Join_(SQL)
是的,这两个陈述都是等同的: - )
答案 4 :(得分:3)
是的,它由JOIN运算符一侧确定,表格出现在。你的两个例子确实是等价的。