1

私はこのクエリの結果に夢中です

このクエリは29.970行(個別のIdDireccionIne)を返します。

select distinct IdDireccionIne from DireccionIne as DI

このクエリは29.544行(個別のIdDireccionIne)を返します。

select distinct IdDireccionIne from DireccionCorregida 
  where IdDireccionIne is not null

2番目のクエリ(29.544)にない最初のクエリ(29.970行)のIdDireccionIneを探したいのですが、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で2つのクエリの結果をコピーして貼り付けたところ、2番目の結果にはない最初の結果のレコードを手作業で見つけました。何度もチェックしました。私は身に着けていません。これで何が問題になる可能性がありますか?IdDireccionIneは、両方のテーブルのintです。

2番目の編集:1つのコメントで示唆されているように、私がこれを行う場合:

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

左側に値があり、右側にnullがある、予想される426行を取得します。しかし、元のクエリでそれらが見つからない理由はまだわかりません。

4

1 に答える 1

4

次のクエリを試すことができますか?

select distinct IdDireccionIne
from DireccionIne as DI  -- 29.970
where IdDireccionIne not in (select distinct DireccionCorregida.IdDireccionIne
                             from DireccionCorregida
                             where DireccionCorregida.IdDireccionIne is not null)

スコープルールは、サブクエリfrom句からIdDireccionIneを明確に取得する必要があります。しかし、そこに何らかの混乱があるのではないかと思います。

于 2012-06-28T17:58:27.577 に答える