我gettintg疯狂与此查询的结果莫名其妙的查询结果寻找一个查询行其不在其他查询
该查询返回29.970行(不同IdDireccionIne):
select distinct IdDireccionIne from DireccionIne as DI
该查询返回29.544行(不同IdDireccionIne):
select distinct IdDireccionIne from DireccionCorregida
where IdDireccionIne is not null
我要寻找的第一个查询(29.970行),这是不是在第二个查询的IdDireccionIne(29.54 4)我应该得到29.970 - 29.544 = 426的记录。
select distinct IdDireccionIne from DireccionIne as DI -- 29.970
where IdDireccionIne not in
(select distinct IdDireccionIne from DireccionCorregida
where IdDireccionIne is not null) -- 29.544
令人惊讶的是,我得到0行!这个查询有什么问题?
编辑:我甚至复制和粘贴在Excel中的两个查询的结果,我发现了一些不在第二个结果的第一个结果的记录。我已经检查过很多次了。我不是worng。这有什么问题? IdDireccionIne在两个表中都是int。
第二编辑:正如一项评论所说,如果我这样做:
select * from (select distinct IdDireccionIne from DireccionIne as DI) as T1
full outer join
(select distinct IdDireccionIne from DireccionCorregida
where IdDireccionIne is not null) as T2
on T1.IdDireccionIne = T2.IdDireccionIne
where T1.IdDireccionIne is null or T2.IdDireccionIne is null
我得到预期的426行与右侧左侧值和空值。但我仍然不明白为什么我的原始查询没有找到它们。
对我来说看起来不错。在两个表之间建立连接,如果返回0是因为两个表之间没有匹配值 –
如果没有,则应该返回第一个查询的所有行。如果第一个查询返回(1,2,3),第二个(4,5,6)这个查询应该返回(1,2,3),因为它不在(4,5,6)中。 (或者太晚了,我的大脑正在融化......) – JotaBe
@ElVieejo如何找到不在第二个查询中的第一个查询的所有记录。这不是一个加入。我正在使用“不在”。如果我使用“in”,你的回答是正确的。或者我错了? – JotaBe