交叉联接和内部联接,左联接,右联接,外联接之间的区别

时间:2019-04-13 11:01:37

标签: mysql join

据我了解,[ { field_data : [ { k:v for k, v in thing.items() if k != 'field' } for thing in things if thing['field']['data'] == field_data ] for field_data in set(thing['field']['data'] for thing in things) } ] 本质上是产生笛卡尔乘积的叉积。 CROSS JOININNER JOINRIGHT JOINLEFT JOIN还是笛卡尔积,除了事实是它们不产生重复项并且对其应用了某些条件?

谢谢!

注意:我不认为这是重复的 。该链接未详细说明与我所寻找的细节的区别。留给读者来挖掘和推断差异。我在下面提供的答案有望为读者节省一些时间。

2 个答案:

答案 0 :(得分:-1)

交叉联接将一个表中的所有行与另一表中的所有行匹配。内部联接在一个或多个字段上匹配。如果您的一张表有10行,而另一张表有10行,则这两个联接的行为将有所不同。

交叉连接将返回100行,并且它们将不相关,只是所谓的笛卡尔乘积。内部联接将彼此匹配记录。假设其中一个具有主键,而另一个具有外键,则将返回10行。

![1]:https://www.sunnyhoi.com/app/uploads/2017/07/inner-join-vs-cross-join-in-sql-server.jpg

注意:您可以从此链接https://www.w3schools.com/sql/sql_join.asp

查看更多信息

答案 1 :(得分:-1)

  

可以将JOIN操作指定为CARTESIAN PRODUCT操作   然后执行SELECT操作。

     

...

     

JOIN的结果是具有n + m个属性Q(A1,A2,   ...,An,B1,B2,...,Bm)的顺序; Q每个有一个元组   无论何时,只要元组的组合(一个来自R,一个来自S)   组合满足连接条件。这是主要区别   在笛卡尔积和JOIN之间。在JOIN中,仅以下各项的组合   满足连接条件的元组出现在结果中,而在   笛卡尔积的所有元组组合都包含在   结果。连接条件是从两个属性中指定的   关系R和S,并针对每个元组组合进行评估。   连接条件求值为TRUE的每个元组组合   作为单个组合元组包含在结果关系Q中。

资料来源:《数据库系统基础》(第7版),Elmasri