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.
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.
name
当 in 的键上有多个匹配项时,带有连接的查询将返回 的重复副本b
。
这两个查询不一样。
如果表 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 演示