哪个表恰好是JOIN语句(SQL)中的"左"表和"右"表?

Jak*_*ake 58 sql join

什么使得给定的表成为左表?

该表是否在查询的"发件人"部分中指示?

或者,它是左表,因为它位于=运算符的左侧?

以下是等效的

SELECT *
FROM left_table
LEFT JOIN right_table ON left_table.right_id = right_table.id
Run Code Online (Sandbox Code Playgroud)

SELECT *
FROM left_table
LEFT JOIN right_table on right_table.left_id = left_table.id
Run Code Online (Sandbox Code Playgroud)

???

谢谢

Pau*_*ier 41

Left表是select中的第一个表.是的,你的两个例子是等价的.

  • 这需要澄清。“选择中的第一个表”是什么意思? (2认同)
  • 我认为应该说“左表是 FROM 子句中的第一个表” (2认同)

mbi*_*ard 10

右表始终是您要加入的表.所以是的,你的两个陈述都是等同的.

JOIN [Table] ON ...
Run Code Online (Sandbox Code Playgroud)

[表]始终是正确的表格.

  • 这就引出了“您要加入的表”是什么意思的问题。 (2认同)

Pau*_*ine 8

大致"左"是从左到右阅读整个FROM子句中首先出现的所有内容的结果 - 包括其他JOIN,子查询,VIEW和STORED PROCEDURES的结果.

两个SQL语句都是等价的,因为子句部分的=运算符是对称的(如果a = b然后b = a),那么无论顺序如何,结果都是相同的.ONJOIN

常规连接仅显示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
Run Code Online (Sandbox Code Playgroud)


Gab*_*ana 5

看到此链接可以很好地了解联接:http : //en.wikipedia.org/wiki/Join_(SQL)

是的,这两个语句是等效的:-)

  • Smiple,是吗?*确实。* :) (2认同)
  • 这是我在较早的BBS时代中使用的标语...啊,在14.4k时对USR豪华的回忆:) (2认同)