选择并连接返回重复数据



我有一些可以在这里访问的表,我想从Entry表和judicial alorder表中获得一个带有EntryId和ProtocolNumber的新表。为此,我使用这个查询:

SELECT DISTINCT ET.EntryId, JOA.ProtocolNumber FROM Entry AS ET
LEFT JOIN JudicialOrderAccount AS JOT ON JOT.AccountId = ET.OwnerAccountId
INNER JOIN JudicialOrder AS JOA ON JOA.JudicialOrderId = JOT.JudicialOrderId;

但是协议号是重复的,我的查询可能有什么问题?

正如Kurt所说,只有ET.EntryId, JOA的组合。ProtocolNumber是唯一的。如果您通过。

添加订单,您将识别它。
SELECT DISTINCT ET.EntryId, JOA.ProtocolNumber FROM Entry AS ET
LEFT JOIN JudicialOrderAccount AS JOT ON JOT.AccountId = ET.OwnerAccountId
INNER JOIN JudicialOrder AS JOA ON JOA.JudicialOrderId = JOT.JudicialOrderId
ORDER BY ET.EntryId, JOA.ProtocolNumber;

如果你真的想有唯一的协议号,你需要按协议号分组,并在一些string_agg函数中包装EntryId(取决于你的数据库)。

供参考:你的左JOIN - INNER JOIN组合最终是两个INNER JOIN,请参阅

最新更新