首页 > 数据库 > mysql教程 > 如何高效地对三个表执行 MySQL LEFT JOIN?

如何高效地对三个表执行 MySQL LEFT JOIN?

Susan Sarandon
发布: 2025-01-02 22:22:39
原创
621 人浏览过

How to Efficiently Perform a MySQL LEFT JOIN with Three Tables?

理解具有三个表的 MySQL LEFT JOIN

问题描述

考虑三个表:

  • Persons (PersonID,名称,SS):包含有关的信息
  • 恐惧(FearID、Fear):列出不同的恐惧。
  • Person_Fear(ID、PersonID、FearID):将个人与其相关的恐惧联系起来。

目的是显示所有个人以及与他们相关的任何恐惧(包括一个人没有恐惧的情况)

分析查询问题

提供的查询显示了错误的连接表架构:

SELECT persons.name, 
       persons.ss, 
       fears.fear 
FROM   persons 
       LEFT JOIN fears 
              ON person_fear.personid = person_fear.fearid 
登录后复制

ON 子句错误地尝试连接 Person_Fear 表PersonID 而不是 FearID,它是连接到 Fears 的列。

改进解决方案

要有效地执行左连接,请考虑以下方法:

SELECT Persons.Name, Persons.SS, Fears.Fear
FROM Persons
LEFT JOIN Person_Fear
    INNER JOIN Fears
    ON Person_Fear.FearID = Fears.FearID
ON Person_Fear.PersonID = Persons.PersonID
登录后复制

说明:

  • Persons 表已离开在 Person_Fear.PersonID = 上加入 Person_Fear Persons.PersonID。
  • 嵌套的 INNER JOIN 将 Person_Fear 连接到 Person_Fear.FearID = Fears.FearID 上的 Fears。
  • 此结构确保包含所有 Persons 记录,即使是那些没有关联恐惧的记录。

替代方案查询:

获得相同结果的另一种方法是:

SELECT Persons.Name, Persons.SS, Fears.Fear
FROM Persons
LEFT JOIN Person_Fear ON Person_Fear.PersonID = Persons.PersonID
LEFT JOIN Fears ON Person_Fear.FearID = Fears.FearID
登录后复制

此查询使用两个左连接来连接表,产生类似的结果。

以上是如何高效地对三个表执行 MySQL LEFT JOIN?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板