MySQL:快速细分连接types

我想快速分解一下MySQL连接的types。 我知道这些,其余的我不确定他们的意思。

  • 逗号分隔(这到底是什么?): SELECT * FROM a, b WHERE b.id = a.beeId AND ...
  • 显示来自a的信息,即使在b中没有匹配: SELECT * FROM a LEFT OUTER JOIN b ON b.id = a.beeId WHERE ...

我已经看到了其他的连接,但是想知道是什么使它们变得不同, INNER / OUTER是什么,增加了LEFT改变的东西。

我已经知道如何join工作,我只想知道是否有其他types的联接,或者如果他们是不同的方式来获得相同的结果。

根据你的评论,每个简单的定义最好在W3Schools中find每种types的第一行给出了连接types的简单解释

  • JOIN:当两个表中至less有一个匹配时返回行
  • LEFT JOIN:即使右表中没有匹配,也可以返回左表中的所有行
  • RIGHT JOIN:即使左表中没有匹配,也可以从右表中返回所有行
  • FULL JOIN:当其中一个表格匹配时返回行

结束编辑

简而言之,用逗号分隔的例子

 SELECT * FROM a, b WHERE b.id = a.beeId AND ... 

从表a和表b中select每个logging,用逗号分隔表,这也可以用在像列这样的列中

 SELECT a.beeName,b.* FROM a, b WHERE b.id = a.beeId AND ... 

然后,在您的示例中,获取b.id列和a.beeId列匹配的行中的指示信息。 所以在你的例子中,它将从b和b所在的表中获得所有信息,其中b.id等于a.beeId。 在我的示例中,当b.id等于a.beeId时,它将从b表中获取所有信息,仅从a.beeName列中获取信息。 请注意,还有一个AND子句,这将有助于改进您的结果。

对于一些简单的教程和对mySQL连接和左连接的解释,可以看看Tizag的mySQL教程。 你也可以查看Keith J. Brown的网站了解更多关于连接的信息。

我希望这可以帮助你

完全外部连接不存在于mysql中,您可能需要使用左右连接的组合。