Mysql 左联接条件下的键顺序

Mysql 左联接条件下的键顺序,mysql,join,left-join,Mysql,Join,Left Join,当我们在左连接条件下反转键的顺序时会发生什么 连接两个表的理想SQL左连接语法是 select fields from tableA LEFT JOIN tableB ON tableA.key = tableB.key 连接条件的翻转顺序 select fields from tableA LEFT JOIN tableB ON tableB.key = tableA.key -- (order flipped) 这些查询会产生不同的结果集吗?您将得到相同的结果。on子句的计

当我们在左连接条件下反转键的顺序时会发生什么

连接两个表的理想SQL左连接语法是

select fields 
from tableA 
LEFT JOIN tableB 
ON tableA.key = tableB.key
连接条件的翻转顺序

select fields 
from tableA 
LEFT JOIN tableB 
ON tableB.key = tableA.key  -- (order flipped)

这些查询会产生不同的结果集吗?

您将得到相同的结果。on子句的计算结果仅为true或false;顺序无关紧要

只有桌子本身的位置才重要。e、 g.按如下顺序颠倒表格顺序会得到不同的结果

select fields 
from tableB 
LEFT JOIN tableA
ON tableA.key = tableB.key

你会得到同样的结果。on子句的计算结果仅为true或false;顺序无关紧要

只有桌子本身的位置才重要。e、 g.按如下顺序颠倒表格顺序会得到不同的结果

select fields 
from tableB 
LEFT JOIN tableA
ON tableA.key = tableB.key

LEFT JOIN
是不可交换的,您不能切换参数:
tableA LEFT JOIN tableB
等同于
tableB RIGHT JOIN tableA
,不同于
tableB LEFT JOIN tableA


=
是可交换的,您可以切换参数:
tableA.key=tableB.key
相当于
tableB.key=tableA.key
左连接
是不可交换的,您不能切换参数:
tableA左连接tableB
相当于
tableB右连接tableA
,与
表B不同,左连接表A


=
是可交换的,您可以切换参数:
tableA.key=tableB.key
等同于
tableB.key=tableA.key
除了查询的可读性之外,没有任何区别

SQL被设计成像普通英文文本一样可读。在通常的文本中,当我们想要指定任何提到的对象时,我们会说“一个对象。这个对象就像那个对象,这个对象与那个对象相关,这个对象具有那个些属性。”我们不会说“那个对象像这个对象,那个对象与这个对象相关,那个属性具有这个对象”


所以,当我们将TableB的记录添加到TableA的查询中时,我们需要指定必须有TableB的记录才能满足TableA的当前记录。所以我们必须说,我们需要TableB中的记录,它有一个id,等于TableA.id。TableB.id=TableA.id。我们必须严格按照这个顺序书写,以便于阅读和理解这种关系。

除了查询的可读性之外,没有任何区别

SQL被设计成像普通英文文本一样可读。在通常的文本中,当我们想要指定任何提到的对象时,我们会说“一个对象。这个对象就像那个对象,这个对象与那个对象相关,这个对象具有那个些属性。”我们不会说“那个对象像这个对象,那个对象与这个对象相关,那个属性具有这个对象”


所以,当我们将TableB的记录添加到TableA的查询中时,我们需要指定必须有TableB的记录才能满足TableA的当前记录。所以我们必须说,我们需要TableB中的记录,它有一个id,等于TableA.id。TableB.id=TableA.id。我们必须严格按照这个顺序来写,以便于阅读和理解这种关系。

相同的事情不区分相同的事情不区分是一个相似的问题是一个相似的问题