嗨,我有一个表'ABC',主键'ID',表XYZ中的外键为'ID'.
我试图从ABC中删除,具体取决于ID!='A'或ID!='A2'的条件.我有两个问题.
DELETE FROM ABC WHERE ID NOT IN ('A','A2')
和
delete from ABC where ID !='A' or ID !='A2'
我假设两者在逻辑上是相同的和正确的.但是我在使用'OR'条件的第二个中获得XYZ表的完整性错误.
有人可以帮忙,告诉它为什么会发生.
编辑::抱歉这是错误的
这两个查询不完全相同.
第一种保持具有条目ID任一'A'或'A2'.第二个删除ABC表中的所有条目.
条件:
ID IN ('A', 'A2')
Run Code Online (Sandbox Code Playgroud)
是相同的:
ID = 'A' OR ID = 'A2'
Run Code Online (Sandbox Code Playgroud)
否定条件:
ID NOT IN ('A', 'A2')
Run Code Online (Sandbox Code Playgroud)
是相同的:
NOT (ID = 'A' OR ID = 'A2')
Run Code Online (Sandbox Code Playgroud)
根据德摩根法律,它与以下内容相同:
NOT (ID = 'A') AND NOT (ID = 'A2')
Run Code Online (Sandbox Code Playgroud)
这与:
ID != 'A' AND ID != 'A2'
Run Code Online (Sandbox Code Playgroud)
您的condition(ID != 'A' OR ID != 'A2')删除了行,ID = 'A'因为它们匹配条件的另一半(ID != 'A2').具有相同的行ID = 'A2'.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |