首页 > 数据库 > mysql教程 > 如何在 SQL 中使用相同的外键正确连接多个表?

如何在 SQL 中使用相同的外键正确连接多个表?

DDD
发布: 2024-12-26 07:11:12
原创
818 人浏览过

How to Correctly Join Multiple Tables in SQL with Identical Foreign Keys?

使用 SQL Inner Join 连接多个表

在数据库中使用多个表时,通常需要连接它们以检索相关数据。一种类型的联接称为内部联接,它仅检索与指定条件匹配的行。

要联接多个表,您可以使用以下语法:

SELECT *
FROM table1
INNER JOIN table2 ON table1.column1 = table2.column2
INNER JOIN table3 ON table1.column1 = table3.column3
登录后复制

在此示例中,table1 表使用column1 列连接到table2 表,然后再次使用column1 列连接到table3 表。这可确保仅返回所有三个表中符合指定条件的行。

但是,在尝试使用相同外键连接多个表时可能会遇到问题。例如,假设您有以下模式:

table1: id, name
table2: id, table1Id
table3: id, table1Id
登录后复制

您可以使用以下查询连接前两个表:

SELECT * FROM `table1` INNER JOIN `table2` ON table1.id=table2.table1Id
登录后复制

现在,您想要将第三个表连接到查询。您可以尝试以下操作:

SELECT * FROM `table1` 
INNER JOIN `table2` 
INNER JOIN table3 
ON table1.id=table2.table1Id=table3.table1Id
登录后复制

但是,此查询不会返回任何结果。原因是 table1.id 列正在与 table2.table1Id 和 table3.table1Id 进行比较。要解决此问题,您需要确保每个表都使用其自己唯一的外键列进行连接。正确的查询是:

SELECT * 
FROM table1 
INNER JOIN table2
      ON table1.id=table2.table1Id
INNER JOIN table3
      ON table1.id=table3.table1Id
登录后复制

以上是如何在 SQL 中使用相同的外键正确连接多个表?的详细内容。更多信息请关注PHP中文网其他相关文章!

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