2个查询返回不同的结果时,我想到了相同的结果

问题描述 投票:0回答:3

我有返回时,我希望他们是相同的不同的结果,两个SQL查询。

问题1:

SELECT COUNT(a.Id) 
FROM Accounts as a 
WHERE a.STATUS = 1 AND a.Type = 'A'
// returns 3529 results

问题2:

SELECT COUNT(a.Id) 
FROM Accounts as a 
INNER JOIN Payments as p ON a.Id = p.AccountId 
WHERE a.STATUS = 1 AND a.Type = 'A' AND p.STATUS = 1
// returns 3530 results

这是我们的系统冲突。要检索未知Id,这会导致冲突我有下面的查询。

SELECT t1.Id 
FROM (SELECT a.Id 
      FROM Accounts as a 
      INNER JOIN Payments as p ON a.Id = p.AccountId 
      WHERE a.STATUS = 1 AND a.Type = 'A' AND p.STATUS = 1) AS t1
WHERE t1.Id NOT IN (SELECT a.Id 
                    FROM Accounts as a 
                    WHERE a.STATUS = 1 AND a.Type = 'A') 

该查询返回任何结果,我不知道该如何解决这个问题。

一个问题解决了谢谢你的关心。

sql sql-server sql-server-2012
3个回答
0
投票
SELECT a.Id,count(*)
FROM Accounts as a
INNER JOIN Payments as p ON a.Id = p.AccountId
WHERE a.STATUS = 1
AND a.Type = 'A'
AND p.STATUS = 1
group by a.Id
having count(*)>1

0
投票

我认为有具有p.STATUS <> 1付款账户


0
投票

不一致性源于一个事实,即一个账户可以有多个付款。例如,在Payments,就会有记录,如:

{AccountId=1, STATUS = 1}
{AccountId=2, STATUS = 1}
{AccountId=2, STATUS = 1}

所以,如果你在这里进行POI qazxsw,qazxsw POI将计算qazxsw POI,两次。但是,在查询1,它不会发生。这就是为什么两个结果是不同的。

© www.soinside.com 2019 - 2024. All rights reserved.