有人可以解释一下之间的区别:
SELECT name
FROM a.table
LEFT OUTER JOIN b.table
ON a.key = b.key;
和
SELECT name
FROM a.table;
我认为没有区别,因为在任何情况下,两者都会返回表a.table中的所有名称。
答案 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