我有一个包含属性的数据库,我需要删除除3个“Inscription Agents”中任何一个“拥有”的所有属性。每个属性最多可包含2个“所有者”:数据库中的agent_inscripteur_1
和agent_inscripteur_2
。
这是我的代码:
DELETE FROM inscriptions
WHERE (agent_inscripteur_1 != 100520 OR agent_inscripteur_2 != 100520)
AND (agent_inscripteur_1 != 97927 OR agent_inscripteur_2 != 97927)
AND (agent_inscripteur_1 != 99237 OR agent_inscripteur_2 != 99237)
我认为在我的情况下发生的事情是AND
之前的代码的第一部分在其余部分之前执行,因此除了第一个代理列出的属性之外的所有属性都被删除(到时候)它到达第二个和第三个代理,属性都消失了。)
有人可以指出我正确的方向吗?
谢谢!
答案 0 :(得分:1)
如果您只是使用NOT IN
代替
DELETE FROM inscriptions
WHERE agent_inscripteur_1 NOT IN (100520,97927,99237)
OR agent_inscripteur_2 NOT IN (100520,97927,99237)
答案 1 :(得分:1)
我认为你可以在这里使用不在运算符
DELETE FROM inscriptions WHERE agent_inscripteur_1 not in(100520,97927,99237)
OR
agent_inscripteur_2 not in(100520,97927,99237)
答案 2 :(得分:1)
我认为在尝试使用否定逻辑时最简单的方法是编写反向,然后用非编写前缀。确定关注的记录,然后不要删除它们,如下所示
DELETE FROM inscriptions
WHERE not ( (agent_inscripteur_1 = 100520 OR agent_inscripteur_2 = 100520)
or (agent_inscripteur_1 = 97927 OR agent_inscripteur_2 = 97927)
or (agent_inscripteur_1 = 99237 OR agent_inscripteur_2 = 99237))
您可以将查询简化为类似
的内容DELETE FROM inscriptions
WHERE not ( agent_inscripteur_1 in (100520, 97927, 99237)
OR agent_inscripteur_2 in (100520, 97927, 99237)
)
答案 3 :(得分:0)
试试这个,
DELETE FROM inscriptions
WHERE (
(agent_inscripteur_1 != 100520 AND agent_inscripteur_2 != 100520)
OR (agent_inscripteur_1 != 97927 AND agent_inscripteur_2 != 97927)
OR (agent_inscripteur_1 != 99237 AND agent_inscripteur_2 != 99237)
)