SQL 连接和关系

suj*_*lil 4 join

我对连接感到困惑。我想知道如何根据表之间的关系选择联接,或者联接是否不依赖关系?

  1. 如果关系是“一对一”,那么“内连接”是最好的。
  2. 如果关系是“一对多”,那么?
  3. 如果关系是“多对一”,那么?
  4. 如果关系是“多对多”,那么 left join 是最好的。

Eri*_*rik 7

与其考虑“基于连接类型的关系多重性”,您应该开始考虑基于如果没有对应关系时您想要发生的情况的连接类型。这是一个更有用的起点。

请参阅Jeff Atwood 的这篇文章。正如您在他的查询旁边的示例结果中看到的那样,inner joins减少结果数量并outer joins允许更多结果进行比较。这两种情况都有用。

一般来说inner joinsouter joins由于性能原因应该优先考虑,但是如果没有匹配,哪种连接类型的驱动力需要是你想要发生的。此外,根据我的经验,普遍偏爱left outer joinsover right outer joins

与生活中的任何事情一样,都有警告和陷阱,但这是一个更好的起点。

另一个有用的可视化:SQL 连接很容易

CL Mofat 的可视化 SQL 连接