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

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

Susan Sarandon
Susan Sarandon原创
2025-01-02 22:22:39621浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn