0

私のデータベースには、すべてのファイルを保持するテーブルがあります

このテーブルにはいくつかの依存関係があります (名前を付けましょう: FilesDep1、FilesDep2、FilesDep3、FilesDep4、FilesDep5)

files テーブルには 20000 を超えるレコードが保持されており、5 つの依存関係のいずれにも使用されていないファイルを除外する必要があります。

だから私は FilesDep1 からのすべての FileId でユニオンを使用しました

なので

select Id from [Files] where Id not in
(
    select FileId from [FilesDep1]
    union 
    select FileId from [FilesDep2]
    union 
    select FileId from [FilesDep3]
    union 
    select FileId from [FilesDep4]
    union 
    select FileId from [FilesDep5]
)

すべての組合によって与えられた金額は 1997 年です。したがって、このクエリから 18000 件以上のレコードが取得されると予想されますが、... 0 が返されますか?

この動作の原因を知りたいですか?

を に変更するnot inin、unionquery によって指定された 1997 年のレコードが表示されます...

ps。テーブルの命名や、このクエリに内部結合やその他の代わりにユニオンを使用しているという事実に応答しないでください。この質問は、ユニオン クエリが期待どおりに機能しない理由に関するものです。

4

1 に答える 1