【问题标题】:Left join table with duplicate value in the key column左连接表在键列中有重复值
【发布时间】:2021-04-13 11:49:31
【问题描述】:

对于数据集 a

name height weight
Pen 155 45
Leo 172 50
Dan 180 60

数据集 b

name nation age date of birth
Pen China 22 15/10/1998
Pen Italy 30 19/08/1990
Pen Italy 30 30/01/1990
NULL Japan 27 12/09/1993

我尝试使用以下代码连接两个数据:

Select * From a
JOIN b
ON a.name = b.name;

如何更改我的代码,以便通过在两个数据集中加入 name 列来保留表中的所有内容,并显示所有空值(如果存在)?

【问题讨论】:

标签: mysql sql duplicates left-join


【解决方案1】:

在名称字段上进行简单连接可以帮助您解决此问题

SELECT * FROM a LEFT JOIN b ON a.name = b.name

【讨论】:

    【解决方案2】:

    传统方式是使用outer join

    Select * 
    From a LEFT OUTER JOIN b ON a.name = b.name
    

    你不需要指定 OUTER,因为“LEFT JOIN”在 MySQL 中是一样的。

    Select * 
    From a LEFT JOIN b ON a.name = b.name
    

    使用您喜欢的任何语法,尽管在我看来,添加“OUTER”可以让阅读 SQL 的任何人清楚地知道它是外连接而不是内连接。

    【讨论】:

    • 你有一个 RDBMS 的例子,其中 LEFT JOIN 并不意味着 LEFT OUTER JOIN?
    • 你说得很好,我找不到任何假设使用 LEFT 或 RIGHT 进行内部连接的 RDBMS,也没有任何意义。我删除了那部分答案。
    猜你喜欢
    • 2014-05-11
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2013-11-23
    • 2015-12-29
    • 1970-01-01
    相关资源
    最近更新 更多