-2

Can someone please explain the difference between:

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

and

SELECT name
FROM a.table;

I see no differences as both will return all names in table a.table in any case.

4

2 回答 2

2

name当 in 的键上有多个匹配项时,带有连接的查询将返回 的重复副本b

这两个查询不一样。

于 2013-11-07T23:17:44.813 回答
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 演示

于 2013-11-08T00:05:35.653 回答