1
Oracle DB
を使用して、別のテーブルにないエントリを取得しようとしています。'not in'が動作していませんが、 'minus'はOracle DBで正常に動作しています
次のクエリでは、すべてのレコードを返さない:予想通り
select distinct FOO from TABLE_A where FOO not in (select distinct FOO from TABLE_B)
しかし、次のように戻り、レコード:
(select distinct FOO from TABLE_A) minus (select distinct FOO from TABLE_B)
なぜ最初のクエリでは動作しませんか?私がチェックした
もの:
- 私は明確なキーワードが、運を削除しようとしました。
- 私はクエリとサブクエリを個別に実行し、期待される結果を返します。
- サブクエリを値リストに置き換えました - 期待どおりに動作します。
- 私は列名のエイリアスを付けました。変更はありません。
- 列のデータ型は同じです。
- 問題を引き起こす可能性のあるテーブルが設定されている方法で何も見つけられませんでした。サブクエリで使用
not exists
'table_b'に' foo'が 'null'の行が含まれていますか? –
はい、FOOがnullのTABLE_Bにはいくつかのレコードがあります。 –
'not in'は過去10年ほどです。 'どこにも存在しない'は現在ではどこにあるのですか? – JohnHC