与Distinct运算符和自联接运算符的SQL结果差异

时间:2013-08-30 05:38:31

标签: sql distinct self-join

我正在尝试比较以下查询之间的结果

rootidinvoice表的关键,可以支付或支付发票状态。

Query1:

SELECT COUNT(I1.rootId) 
  FROM Invoice_Table I1 
 WHERE I1.Invoice_Status ='Paid' 
   AND I1.Invoice_Id IN 
                     ( 
                       SELECT DISTINCT I2.Invoice_Id  
                         FROM Invoice_Table I2 
                        WHERE I2.Customer = 'X'
                        GROUP BY I2.Invoice_Id 
                       HAVING COUNT(DISTINCT I2.Invoice_Id||I2.Invoice_Status) > 1
                     ) 

结果 - A

Query2 : 

SELECT COUNT(I1.rootId) 
  FROM Invoice_Table I1, Invoice_Table I2 
 WHERE I1.invoice_id = I2.invoice_id 
   And I1.Invoice_Status = 'Paid' 
   And I2.Invoice_Status <> 'Paid' 
   And I1.rootId <> I2.rootId 
   AND I1.Customer = 'X' 
   AND I2.Customer = 'X'

如果上面的结果是-B

但是如果在Query2中将COUNT(I1.rootId)更改为COUNT(DISTINCT I1.rootId),我会得到结果A,这是query1的结果,我想知道query1和query2是否实际上是相同的?

0 个答案:

没有答案