SQL WHERE条件,不等于?
是否可以否定where子句?
例如
DELETE * FROM table WHERE id != 2; 你可以这样做
 DELETE FROM table WHERE id NOT IN ( 2 ) 
要么
 DELETE FROM table WHERE id <> 2 
 正如@Frank Schmitt指出的那样,您可能也要小心NULL值。 如果你想删除不是2所有东西(包括NULL),那么把OR id IS NULL添加到WHERE子句中。 
你的问题已经被其他海报回答了,我只想指出
  delete from table where id <> 2 
(或其变体,不是id = 2等)不会删除id为NULL的行。
如果您还想删除id = NULL的行:
 delete from table where id <> 2 or id is NULL 
 delete from table where id <> 2 
编辑:更正MySQL的语法
 使用<>来否定where子句。 
  WHERE id <> 2应该可以正常工作…那是你在做什么之后? 
回顾forms逻辑和代数。 一个expression式
 A & B & (D | E) 
可能会以几种方式否定:
- 
显而易见的方式: !( A & B & ( D | E ) )
- 
上面也可以重述,你只需要记住一些逻辑expression式的属性: -   !( A & B )相当于(!A | !B)。
-   !( A | B )相当于(!A & !B)。
-   !( !A )相当于(A)。
 将NOT(!)分布在整个expression式中,反转运算符并消除双重否定符号: !A | !B | ( !D & !E )
-   
所以,一般来说,根据上述规则,任何where子句都可能被否定。 否定这一点
 select * from foo where test-1 and test-2 and ( test-3 OR test-4 ) 
是
 select * from foo where NOT( test-1 and test-2 and ( test-3 OR test-4 ) ) 
要么
 select * from foo where not test-1 OR not test-2 OR ( not test-3 and not test-4 ) 
哪个更好? 这是一个非常敏感的问题。 只有你可以决定。
但请注意,使用NOT会影响优化器可以或不可以执行的操作。 您可能会得到不太理想的查询计划。
你可以做到以下几点:
 DELETE * FROM table WHERE NOT(id = 2); 
是。 如果记忆为我服务,那应该工作。 我们可以使用:
 DELETE FROM table WHERE id <> 2 
我只是解决这个问题。 如果使用<>或不在variables上,则为空,则会导致错误。 因此,而不是<> 1,你必须像这样检查:
  AND (isdelete is NULL or isdelete = 0)