选择缺失列的MySQL子查询或左联接?

选择缺失列的MySQL子查询或左联接?,mysql,Mysql,我需要对3个表执行SELECT查询,我不知道使用子查询是否比使用左连接更好,因为在某些情况下可能缺少一列。以下是表格: 选项(名称、信息…) 业主(姓名、地址) Rel(idoption,idowner) SELECT应该返回所有选项,每个记录中都有所有者的名称,但在某些情况下,该选项可能未连接到任何所有者,并且所有者的名称应该为空。 有什么建议吗?提前感谢LEFT JOIN然后,如果有匹配的所有者或没有匹配的所有者,它将获得所有选项“对左表的额外考虑可以被认为是一种特殊的保存方式。左表中的每一

我需要对3个表执行SELECT查询,我不知道使用子查询是否比使用左连接更好,因为在某些情况下可能缺少一列。以下是表格:

选项(名称、信息…)

业主(姓名、地址)

Rel(idoption,idowner)

SELECT应该返回所有选项,每个记录中都有所有者的名称,但在某些情况下,该选项可能未连接到任何所有者,并且所有者的名称应该为空。
有什么建议吗?提前感谢

LEFT JOIN然后,如果有匹配的所有者或没有匹配的所有者,它将获得所有选项“对左表的额外考虑可以被认为是一种特殊的保存方式。左表中的每一项都将显示在MySQL结果中,即使与它所联接的另一个表不匹配。”


from:

左连接将比子查询更高效、更快。如果在没有匹配的情况下可以使用空值,则是更好的方法。

左连接可能是合适的响应,并且可能比子查询更快,具体取决于您的结果(他们可能会按照相同的计划进行编译)


这是一种多对多关系吗?如果一个选项没有所有者,您希望得到什么结果?>在某些情况下,该选项可能未连接到任何所有者,并且所有者的名称应为空。我不知道示例是否很好地解释了这种情况,但是,是的,一个选项可以链接到多个所有者。如果您保持“加入”状态,则所有者,您将获得所有选项作为列表,一个接一个,并附上所有者记录(如果有)。因此,无论发生什么情况,您都将获得所有选项,即使他们有多个所有者。
SELECT
    op.name
    ,op.info
    ,...
    ,ow.name
    ,ow.address
FROM
    options op
LEFT OUTER JOIN
    Rel r
        ON r.idoption = op.id
LEFT OUTER JOIN
    owners ow
        ON ow.id = r.idowner