【问题标题】:Which join type is required for my query我的查询需要哪种连接类型
【发布时间】:2012-08-08 18:56:30
【问题描述】:

我有一个我的成员的声誉积分表。

rep_id   |   mem_id   |   activity        |   points   |   article_id   |   comment_id
---------|------------|-------------------|------------|----------------|-----------------
1        |   99       |   Posted Comment  |   5        |   10343        |   239403
2        |   99       |   Introduction    |   50       |                |
3        |   99       |   Liked Comment   |   5        |   748          |   9302

如您所见,并非所有声望点都有article_idcomment_id,但是当我列出这些记录时,如果记录确实article_id,我需要从blog_articles 表中获取article_title。与comment_id 相同,如果存在,我需要从blog_comments 表中获取comment。如果article_idcomment_id 丢失,则按原样打印原始记录。

如果有人能告诉我该查询使用哪个联接,我将不胜感激。我认为,通过查看文档,这是我需要的 LEFT JOIN,它从左侧打印所有记录,即使右侧没有匹配项 - 但真的不确定。

我不是在寻找任何代码,只要告诉我推荐使用哪个连接,我就会编写代码。

【问题讨论】:

    标签: mysql sql database join


    【解决方案1】:

    确实,您需要左连接。如果记录没有article_id,则article_title 的值将是NULL。这同样适用于comment_id / comment

    【讨论】:

      【解决方案2】:

      您需要一个 OUTER 联接。外连接有 LEFT、RIGHT 和 FULL 种类。您可以使用可行的 LEFT 或 RIGHT 外连接编写查询,但可能需要 LEFT OUTER JOIN(通常缩写为 LEFT JOIN)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-19
        • 2023-02-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多