SQL: 嵌套子查询错误地返回条目

SQL: Nested subquery is returning entries incorrectly

我在使用嵌套子查询查询数据集时遇到了一些问题,我认为这会非常简单。

我有 table 个客户及其地址 dbo.PERSON_ADDRESSES 以及与客户的交易 dbo.TRANSACT_CUSTOMERS。随着时间的推移,客户在 dbo.PERSON_ADDRESSES table 中存储多个地址是很常见的。我只是想使用 dbo.TRANSACT_CUSOMTERS table 中的最新交易到 dbo.PERSON_ADDRESSES table.[=17= 中的 table 个最新地址]

当我独立地 运行 内部子查询时,它工作正常:它显示了我预想的每个客户的最近一笔交易。但是,出于某种原因,当我 运行 整个查询时,我为每个客户获得了很多很多地址。我不明白为什么。

SELECT MaxTransaction.PERSON_ID, Addr.*
FROM dbo.PERSON_ADDRESSES AS Addr
INNER JOIN
   (SELECT PERSON_ID, Max(TRANSACTION_ID) AS MaxTID
    FROM dbo.TRANSACTION_CUSTOMERS 
    GROUP BY PERSON_ID) AS MaxTransaction
ON MaxTransaction.MaxTID = Addr.TRANSACTION_ID

我猜一笔交易可以有多个客户。要获得每人一行,请使用额外的 JOIN 条件:

SELECT maxp.PERSON_ID, pa.*
FROM dbo.PERSON_ADDRESSES pa JOIN
     (SELECT PERSON_ID, Max(TRANSACTION_ID) AS MaxTID
      FROM dbo.TRANSACTION_CUSTOMERS 
      GROUP BY PERSON_ID
     ) maxp
     ON maxp.person_id = pa.person_id AND
        maxp.MaxTID = pa.TRANSACTION_ID;