回答
你可以这样做
DELETE FROM table WHERE id NOT IN (2)
OR
DELETE FROM table WHERE id <> 2
由于@Frank Schmitt指出,你可能也要小心NULL值。如果要删除不是2
(包括NULL)的所有内容,请将OR id IS NULL
添加到WHERE子句中。
我尝试了这个命令几次..但它似乎并没有工作,直到我意识到DELETE在MySQL中不使用* .. – 2011-05-27 19:59:48
但没有*它很好地工作。谢谢 – 2011-05-27 20:00:09
你走了,编辑答案删除*谢谢指出。 – Lobo 2011-05-27 21:45:33
delete from table where id <> 2
编辑:以正确的语法为MySQL
使用<>
否定where子句。
你可以做到以下几点:
DELETE * FROM table WHERE NOT(id = 2);
如果该值不是数字,则工作良好WHERE NOT(id ='two'); – Kareem 2015-10-11 20:23:11
WHERE id <> 2
应该正常工作......这是你所追求的?
是的。如果记忆为我服务,那应该起作用。 我们可以使用:
DELETE FROM table WHERE id <> 2
回顾形式逻辑和代数。像
A & B & (D | E)
的表达可以用几种方式来否定:
最显而易见的方法:
!(A & B & (D | E))
以上也可以重申,你只需要记住逻辑表达式的一些属性:
!(A & B)
相当于(!A | !B)
。!(A | B)
相当于(!A & !B)
。!(!A)
相当于(A)。
分发不能跨越其适用的整个表达式,反相 运营商和消除双重否定,你走(!):
!A | !B | (!D & !E)
因此,在一般情况下,任何地方条款可以根据上述规则否定。这
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会影响优化器可以或不可以执行的操作。您可能会得到不太理想的查询计划。
我只是解决了这个问题。如果您使用<>或者不在变量上,则为空,则会导致错误。因此,而不是<> 1,你必须检查它像这样:
AND (isdelete is NULL or isdelete = 0)
- 1. 不等于sql条件
- 2. SQL WHERE条件不适用于UUID
- 3. 关于SQL和条件逻辑Where Where
- 4. SQL:根据大小写条件大于或等于where子句?
- 5. sql where条件
- 6. SQL Where条件
- 7. SQL WHERE条件
- 8. PL/SQL Oracle条件等于
- 9. 不等于条件
- 10. SQL个where条件
- 11. SQL WHERE条件“为”
- 12. 如何设置多列不等于零WHERE条件
- 13. 选择不等于条件
- 14. endeca filter不等于条件
- 15. 多不等于where子句
- 16. T-SQL基于WHERE子句的结果的条件WHERE子句
- 17. select where column1等于
- 18. 有条件的WHERE条件SQL脚本
- 19. SQL WHERE子句条件不工作
- 20. SQL Server WHERE条件不考虑空白
- 21. SQL条件where子句不起作用
- 22. SQL - 动态条件Where Where子句
- 23. HANA SQL CTE where条件
- 24. 满足WHERE条件 - T-SQL
- 25. Where条件的SQL Server
- 26. SQL where条件总是真
- 27. SQL条件where语句
- 28. SQL Where子句条件
- 29. SQL - WHERE条件对SUM()
- 30. SQL UDF在WHERE条件
仅供参考,'ID = NULL'做**不**如你所期望的工作! – 2015-07-14 17:51:46