mysql - 对使用 UNION 或 JOIN 感到困惑

标签 mysql sql database-design join union

我有三个 MySQL 表:'people'、'people2id'、'places'。第一个存储有关人员的信息,其中“地点”表存储有关其地址的信息。中间的“people2id”将这两个表互连(可能是一个人有两个或多个地址)。

现在我想转到某个人的个人资料并查看他的个人资料,以及他的关联地址。我为此创建了这个查询:

 SELECT * FROM people p
 JOIN people2id e ON p.peopleId = e.peopleId
 JOIN places a ON a.peopleId = e.peopleId
 WHERE p.peopleId = number

当此人有关联地址时,此方法有效,否则,它将失败。我不明白我应该使用任何类型的 JOIN 还是使用 UNION 来解决这个问题。

最佳答案

JOIN 更改为 LEFT JOIN,即

 SELECT * FROM people p
 LEFT JOIN people2id e ON p.peopleId = e.peopleId
 LEFT JOIN places a ON a.peopleId = e.peopleId
 WHERE p.peopleId = number

使用 LEFT JOIN 将包含来自 people 的所有记录,无论它们是否包含关联记录。

关于mysql - 对使用 UNION 或 JOIN 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19035298/

相关文章:

database-design - 如何设计二叉树的数据库?

mysql - 仅来自日期时间列的时间

php - 如何选择数据库服务器的默认排序规则值

sql - 在日期时间间隔内展开表格

mysql触发查询。这是对的吗?

ruby-on-rails - 用户帐户设计和安全

php - 加载数据失败。没有返回错误,也没有导入记录

mySQL 子查询导致未知列错误

c# - 单元测试数据库代码

php - 计费系统应用程序的数据库设计