【问题标题】:Please explain MySQL Joins in simple language请用简单的语言解释MySQL Joins
【发布时间】:2010-04-10 04:56:20
【问题描述】:

请用简单的语言向我解释加入。请不要发布网络链接,因为我需要阅读开发人员的理解方式,而不是作者。

【问题讨论】:

    标签: mysql join


    【解决方案1】:

    我能告诉你的最好是A Visual Explanation of SQL Joins

    这些图表对我帮助很大。


    在此处添加链接帖子中的主图。

    内连接

    内连接只产生在表 A 和表 B 中都匹配的记录集。

    全外连接

    全外连接生成表 A 和表 B 中所有记录的集合,并在可用的情况下从双方匹配记录。如果没有匹配,缺失的一方将包含 null。

    左外连接

    左外连接从表 A 中产生一组完整的记录,在表 B 中匹配记录(如果有)。如果没有匹配,右侧将包含 null。

    【讨论】:

    • +1,我必须承认,链接和图表非常足智多谋,更不用说,漂亮。
    • 非常有用的图表。真希望我几年前有过。
    【解决方案2】:

    给定表的人和信息

    SELECT *
    FROM Person INNER JOIN
    Information ON Person.ID = Information.ID
    

    只会从两个表中返回两个表具有相同 ID 的行。因此,只有当 ID 存在于 Person 和 Information 中时,才会返回该行。

    SELECT *
    FROM Person LEFT JOIN
    Information ON Person.ID = Information.ID
    

    将返回来自 Person 的所有行,并且只返回那些从 Information 中匹配的行,如果不匹配,它将返回 NULLs

    SELECT *
    FROM Person LEFT JOIN
    Information ON Person.ID = Information.ID
    WHERE Information.ID IS NULL
    

    将返回 Person 中没有 Information 条目的所有行。这将向您显示尚未更新其信息的人员列表。

    【讨论】:

      【解决方案3】:

      我将您的问题解释为一般意义上的联接,而不是每种类型的联接,因此,如果这不妥当,我深表歉意:

      基本上,通过向结果集中添加列,联接使您能够在单个查询中从多个表中获取数据。因此,如果您有以下表格:

      Books   (ID, Title, AuthorID)
      Authors (ID, Name)
      

      您可以得到如下所示的结果集:

        Book                    |   Author
      'The Sirens of Titan'     | 'Kurt Vonnegut'
      'The Old Man and the Sea' | 'Earnest Hemingway'
      

      通过像这样将两个表连接在一起:

      select Books.Title as Book, Authors.Name as Author
      from Books
      inner join Authors on Authors.ID = Books.AuthorID
      

      内连接是最简单的连接类型;如果不首先深入了解内连接及其用途,可能很难理解外连接的意义。

      【讨论】:

        猜你喜欢
        • 2017-05-12
        • 1970-01-01
        • 2021-02-13
        • 2023-03-05
        • 1970-01-01
        • 2013-12-29
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        相关资源
        最近更新 更多