特定情况下的SQL外部联接目的

时间:2013-11-07 23:15:42

标签: mysql

有人可以解释一下之间的区别:

SELECT name
FROM a.table
LEFT OUTER JOIN b.table
ON a.key = b.key;

SELECT name
FROM a.table;

我认为没有区别,因为在任何情况下,两者都会返回表a.table中的所有名称。

2 个答案:

答案 0 :(得分:2)

name中的密钥存在多个匹配项时,带有联接的查询将返回b的重复副本。

两个查询不一样。

答案 1 :(得分:0)

如果表A和表B之间的关系是一对一的,也就是说,表B中的“键”也是主键,因此如表'A'中的唯一,那么两者是相等的

表A:

  Key      Name
  ----     --------------
   1       George
   2       Lisa
   3       Bill

表B:

  Key
  ----
   1
   3

使用您的第一个查询的结果将是下面的一个,与第二个查询相同:

  Name
  -------
  George
  Lisa
  Bill

但是,如果关系是一对多的,也就是说,一个记录表A可能在表B中有一个或多个相关记录。这意味着表B中的“键”是外键然后是两个不平等。

表B:

  Key
  ----
   1
   2
   3
   1
   3

使用您的第一个查询的结果将是:

  Name
  -------
  George
  George
  Lisa
  Bill
  Bill

查看我的SQL Fiddle Demo