如何在where子句中检测哪个条件为false

时间:2015-08-24 09:10:23

标签: mysql

我有这样的查询:

select * from table where rep > 20 and timestamp > now() - 300;

如您所见,有两个条件:

  • rep > 20
  • timestamp > now() - 300

现在我需要知道,当select的结果为0时,哪个条件会破坏查询,我需要它来管理错误。我想向用户展示他为什么不能投票......我需要理由。那么,有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这是不可能的,因为它没有意义。

也许你有rep > 20的大量行,也许你有timestamp > now() - 300行,但你没有任何行 {{1 }和rep > 20。因此,没有“哪个条件打破了查询”,这是两个条件的逻辑组合,打破了查询。

如果您需要调试查询(对于您,作为开发人员),典型的过程是:

  1. 仅使用一个timestamp > now() - 300子句
  2. 运行查询
  3. 添加另一个where子句,再次运行查询
  4. 重复直到结果变为零。然后你知道添加的最后一个where子句使查询返回零。但同样,最后一个where条款本身可能完全有效 - 只是在与其他条款结合使用时才会有效。