2016-12-07 3 views
2

こんにちは私は、 'ID'としてテーブルXYZの外部キーであるプライマリキー 'ID'を持つテーブル 'ABC'を持っています。オラクルのOR条件に対して否定されました

ID!= 'A'かID!= 'A2'の条件によって、ABCから削除しようとしています。私は2つのクエリを持っています。

DELETE FROM ABC WHERE ID NOT IN ('A','A2')

delete from ABC where ID !='A' or ID !='A2'

私は両方が論理的に同じと正しいことを前提としています。しかし、私は 'OR'条件を使用している2番目のXYZテーブルの整合性エラーを取得しています。

誰かが助けて、なぜそれが起こっているのか教えてください。

EDIT ::それは間違い

+0

同じ列 'team_tenant、id'ではなく、同じ論理ではありません。 – sagi

+1

最初のクエリではID列を使用し、2番目のクエリではIDとteam_tenant列を使用しています。彼らは同じではありません。 –

+0

申し訳ありませんが、間違っていました:) – SYMA

答えて

6

によって同一ではない2つのクエリた申し訳ありません。

IDのエントリは、最初に'A'または'A2'のままです。 2番目のテーブルは、ABCテーブルからすべてのエントリを削除します。

条件:条件を否定

ID = 'A' OR ID = 'A2' 

ID IN ('A', 'A2') 

は同じである

NOT (ID = 'A' OR ID = 'A2') 

ID NOT IN ('A', 'A2') 

は同じです

ID != 'A' AND ID != 'A2' 

あなたの条件(ID != 'A' OR ID != 'A2')は、それらが他の半分に一致するためID = 'A'を有する行を削除しますと同じである

NOT (ID = 'A') AND NOT (ID = 'A2') 

De Morgan lawsによれば、同じである、

条件(ID != 'A2')。 ID = 'A2'の行についても同様です。

関連する問題