私はこれらの2つのクエリの結果に驚いていました。私は両方から同じことを期待していました。共通のフィールドを共有する2つのテーブルがありますが、関係が設定されていません。テーブル(A
)にはフィールドがEventID varchar(10)
あり、テーブル(B
)にはフィールドがありますXXNumber varchar(15)
。
テーブル列の値は、テーブルB
列XXNumber
で参照されA
ますEventID
。15文字を保持できますXXNumber
が、179K行のデータはいずれも10文字より長くありません。
したがって、要件は次のとおりです。
「テーブルBとテーブルAのエントリの重複を避けるために、XXNumberがテーブルA>「イベントID」番号に含まれている場合は、カウントしないでください。」
このクエリを最初に実行した一般的なレコードの数を確認するには、クエリアルファと呼びます。」
SELECT dbo.TableB.XXNumber FROM dbo.TableB WHERE dbo.TableB.XXNumber in
( select distinct dbo.TableA.EventId FROM dbo.TableA )
結果は5322行でした。
次のクエリ-次のようなクエリデルタと呼びます。
SELECT DISTINCT dbo.TableB.XXNumber, dbo.TableB.EventId
FROM dbo.TableB INNER JOIN dbo.TableA ON dbo.TableB.XXNumber= dbo.TableB.EventId
haasは4308行を返しました。
結果の行数は同じではありませんか?