我想通过 equi join 从两个表中获取一些人的数据。有些人有地址数据,有些人没有。对于那些没有addresses_id
from 表的人来说persons
是 NULL。
对于所有有地址的人(查询#1):
SELECT p.last_name, p.first_name,
a.street, a.house_nr, a.post_code, a.city
FROM persons AS p, addresses AS a
WHERE p.id=42 AND a.id=p.addresses_id;
Run Code Online (Sandbox Code Playgroud)
对于我所做的所有没有地址数据的人(查询#2):
SELECT p.last_name, p.first_name
FROM persons AS p WHERE p.id=42;
Run Code Online (Sandbox Code Playgroud)
有没有什么顺畅的方法可以将这两个查询合二为一。也许有一个 if 子句?我不想自己检查该addresses_id
字段然后执行 query#1 或 query#2。
我正在将 MySQL 与 InnoDB 引擎一起使用。谢谢。
小智 6
也许是这样的:
SELECT
p.last_name,
p.first_name,
a.street,
a.house_nr,
a.post_code,
a.city
FROM persons AS p
LEFT JOIN addresses AS a
WHERE p.id=42
Run Code Online (Sandbox Code Playgroud)