Mysql SQL外部联接在特定情况下的用途

Mysql SQL外部联接在特定情况下的用途,mysql,Mysql,有人能解释一下这两者之间的区别吗 SELECT name FROM a.table LEFT OUTER JOIN b.table ON a.key = b.key; 及 我看不出有什么区别,因为两者在任何情况下都将返回表a.table中的所有名称。当b中的键上有多个匹配项时,带有联接的查询将返回name的重复副本 这两个查询不同。如果表A和表B之间的关系是一对一的,也就是说,表B中的“键”也是主键,因此与表“A”中的键一样是唯一的,那么这两个键是相等的 表A: Key Name

有人能解释一下这两者之间的区别吗

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


我看不出有什么区别,因为两者在任何情况下都将返回表a.table中的所有名称。

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


这两个查询不同。

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

表A:

  Key      Name
  ----     --------------
   1       George
   2       Lisa
   3       Bill
表B:

  Key
  ----
   1
   3
  Key
  ----
   1
   2
   3
   1
   3
使用第一个查询的结果如下,与第二个查询相同:

  Name
  -------
  George
  Lisa
  Bill
但是,如果关系是一对多的,即一个记录表A可以在表B中有一个或多个相关记录。这意味着表B中的“键”是外键,则两者不相等

表B:

  Key
  ----
   1
   3
  Key
  ----
   1
   2
   3
   1
   3
使用第一个查询的结果将是:

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

看我的

你在两个测试表上测试过这个并检查了结果吗?@AcyclicTau。我一直使用连接。这就是他们的行为。很抱歉,评论是针对原始海报的,不是针对你的。