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;
我在使用嵌套子查询查询数据集时遇到了一些问题,我认为这会非常简单。
我有 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;