在 JOIN 语句(SQL)中,哪个表是“ left”表和“ right”表?

是什么使一个给定的表成为左表?

表是否在查询的“ From”部分中指示?

或者,因为它在 = 运算符的左边,所以它是左表吗?

是否等价于

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

???

谢谢

34015 次浏览

请参阅以下关于连接的相当好的演练: http://en.wikipedia.org/wiki/Join_(SQL)

是的,这两种说法是等价的: -)

是的,它是由表所显示的 JOIN 操作符所决定的。

右边的表始终是您要连接的表。因此,是的,您的两个语句是等价的。

JOIN [Table] ON ...

[桌子]总是正确的桌子。

左表是选择中的第一个表。是的,这两个例子是等价的。

粗略地说,“ left”是整个 FROM 子句中从左到右读取时首先出现的所有内容的结果——包括其他 JOIN、子查询、 VIEW 和 STORED PROCEDURES 的结果。

这两个 SQL 语句是等价的,因为 JOIN子句 ON部分的 =操作符是 对称的(如果 a = b,则 b = a) ,所以无论顺序如何,结果都是相同的。

常规联接只显示 JOIN 的 ON 子句为 true 的行,而 LEFT JOIN 也显示条件为 false 时从“ 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

创建表订单(
内部有序,
客户国际,
订购日期
);

插入订单值(10123,10,日期“16-08-20”) ;
插入订单值(10122,11,日期“14-09-20”) ;
插入订单值(10121,12,日期“10-10-20”) ;

创建表客户(
客户国际,
客户名 VARCHAR (20) ,
瓦查(20)
);

插入客户价值观(11,‘菩萨’,‘印度’) ;
插入客户价值(12,“约翰维克”,“美国”) ;
插入客户值(100,‘ SERENA’,‘ UNITED KINGDOM’) ;

讨论左连接查询:

从订单中选择 orders.orderid,customers.customername,orders.orderdate 在 orders.customerid = customers.customerid;

上内部连接客户

如果你想知道确切的左边和右边的表。从左到右,从 From 连接的表是[ left ] ,从 join 连接的表是[ right ]。

黑客快乐! ! !