我有返回时,我希望他们是相同的不同的结果,两个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')
该查询返回任何结果,我不知道该如何解决这个问题。
一个问题解决了谢谢你的关心。
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
我认为有具有p.STATUS <> 1付款账户
不一致性源于一个事实,即一个账户可以有多个付款。例如,在Payments
,就会有记录,如:
{AccountId=1, STATUS = 1}
{AccountId=2, STATUS = 1}
{AccountId=2, STATUS = 1}
所以,如果你在这里进行POI qazxsw,qazxsw POI将计算qazxsw POI,两次。但是,在查询1,它不会发生。这就是为什么两个结果是不同的。