减和子查询之间的区别

时间:2015-02-26 16:51:12

标签: sql netezza

我想知道以下示例中的Minus和子查询之间的区别。我得到了两个不同的结果。基本上我试图找到第一个而不是第二个表中存在的记录。

查询1:

select count(*) from (
(select OrderID
from DB.Orders)
MINUS
(SELECT OrderID 
  FROM DB.Shipments)) as abc;

QUERY2:

select count(*) from (
select OrderID
from DB.Orders as a1
where a1.OrderID Not in
(SELECT OrderID 
  FROM DB.Shipments)) as sub;

2 个答案:

答案 0 :(得分:2)

有两种可能性:

在查询1中,MINUSimplicitly MINUS DISTINCT。试试MINUS ALL

在查询2中,NOT INNULL值的效果不佳。 OrderIDNULL允许DB.Shipments吗?在子查询中尝试SELECT OrderID FROM DB.Shipments WHERE OrderID IS NOT NULL

答案 1 :(得分:0)

这将帮助您排除故障:

select count(*), count(OrderID), count(distinct OrderID) from DB.Orders

这三个数字是否相同?