如何解决SQL:嵌套子查询错误地返回条目
我在使用嵌套子查询查询数据集时遇到了一些麻烦,我认为这很简单。
我有一张客户及其地址dbo.PERSON_ADDRESSES
的表,以及与客户dbo.TRANSACT_CUSTOMERS
的交易。随着时间的推移,客户在dbo.PERSON_ADDRESSES
表中存储多个地址是很常见的。我只是想将dbo.TRANSACT_CUSOMTERS
表中的最新事务用于dbo.PERSON_ADDRESSES
表中的最新地址的表。
当我独立运行内部子查询时,它运行良好:它显示了我所设想的每个客户的最近一笔交易。但是,由于某种原因,当我运行整个查询时,每个客户获得的地址很多。我不明白为什么。
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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。