我们可以使用INNER JOIN,LEFT / RIGHT JOIN,CROSS JOIN的情况是什么

时间:2013-06-27 21:04:00

标签: sql join

我知道内连接,全外连接,左(外)连接,右(外)连接和交叉连接的定义。但是什么时候应该使用这些?有人可以说出一些例子吗?

不要告诉我他们已经习惯了上课。 )

谢谢!

1 个答案:

答案 0 :(得分:4)

请参阅:http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

大多数加入只是管理各种数据集。

  • 内部联接是指我想要在两个集合中匹配的数据
  • 完全外部联接是指我想要两个集合中的所有数据,无论它们是否匹配
  • 左连接是来自一组的所有数据,只有来自另一组的匹配数据 设置
  • 右连接(与左侧相同,但意味着包括来自的所有日期 右连接右侧的表,只有匹配的数据 在左边。
  • 交叉连接是与两个集合中的所有数据相关的所有数据 生成完整的笛卡尔积

因此,何时使用它们取决于您想要的数据。

您何时想要使用交叉联接?说我有一张颜色表,尺寸表,我想卖出所有尺码的所有颜色的“衬衫”颜色和尺寸之间的交叉连接会给我所有颜色的所有颜色的所有衬衫。然后我可以用它来列出所有组合。

内部连接将是我想要显示所有蓝色衬衫所以我将衬衫加入到颜色为蓝色的衬衫。这将消除所有其他衬衫。

左连接可能是我已经销售各种颜色和尺寸的衬衫。但我可能还没有卖过XXL Red衬衫。但是我仍然希望在我的结果中看到它所以我离开加入大小颜色交叉加入我的销售表,以确保我得到红色XXL衬衫返回;因为我们没有任何销售,否则作为内部联接,我们会失去这种组合。

右连接与左边相同,它只管理连接表的ORDER。

我希望看到所有客户以及我们为衬衫运送产品的所有州。但也许客户只从我们这里买了裤子,我们还没有在阿拉斯加卖过任何衬衫。因此,使用完全外部连接,我们可以看到所有客户,即使他们没有买过衬衫,所有州,即使没有在那里出售衬衫。内部会消除记录,就像左或右连接一样。并且交叉加入会给我们不正确的结果,因为并非所有州都有销售。