从联接中选择单行 Table

Selecting a Single Row from Joined Table

我有两个table,PersonAddress,如下图:

地址

使用这些 table,我想为 Person table 中的每个人创建一个视图,但只有最近的地址(即最大 address_id) 需要按如下所示提取(例如,Jane 的地址应在视图中设置为“20 Main St”):

使用下面的脚本,似乎 table 正在按预期加入,但我在 地址 字段中没有看到任何值。我尝试了同一个脚本的几种不同变体,但此时我的轮子几乎旋转了。

任何提示将不胜感激!

SELECT
  p.person_id AS id,
  p.first_name AS first_name,
  p.last_name AS last_name,
  a.address AS address
FROM Person p
LEFT JOIN Address a ON
  a.address_id = (
    SELECT MAX(address_id)
    FROM Address
    WHERE p.person_id = a.person_id
  )

我已经测试了这个查询,它满足你的需要。

select p.id, p.name, a.address
from person p
         left join address a 
             on p.id = a.person_id 
             and a.id = (select max(id) from address where person_id = p.id)
;