我有三个 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/