MySQL查询不针对多个值进行测试

时间:2011-09-19 06:51:12

标签: mysql

有没有更好的方法来编写以下'where'部分的mysql查询:

WHERE t.status IS NOT 'resolved'
  AND t.status IS NOT 'closed'
  AND t.status IS NOT 'deleted'

可以将它们组合成一个where语句吗?

2 个答案:

答案 0 :(得分:9)

WHERE t.status NOT IN ('resolved', 'closed', 'deleted')

布尔代数说这两个表达式是等价的:

NOT A AND NOT B AND NOT C

NOT (A OR B OR C)

这是DeMorgan's Law

答案 1 :(得分:2)

在大多数情况下,您需要在尝试将这些内容组合成更易读和更智能的内容之前考虑成本问题。如果此更改导致成本增加,请检查MySQL的解释计划或等效项。