【问题标题】:MySQL IF function - WHERE 'field1 > 0' ? 'field2 < field1' : ''MySQL IF 函数 - WHERE 'field1 > 0' ? '字段2 <字段1':''
【发布时间】:2012-08-13 08:25:57
【问题描述】:

我需要帮助将其翻译成 MySQL 语句。我需要做类似的事情:

WHERE IF 'field1 > 0' THEN 'field2 < field1'

现在,我有这个 MySQL 语句,但不起作用?:

SELECT * FROM `my_table` WHERE IF(field1>0, field2<field1, 1=1) AND field3='1';

请为此提供解决方案。谢谢!

【问题讨论】:

  • THEN 之后的第二部分是什么意思?
  • 另外,field3 如何适合第一个语句。
  • 没关系...我说noobese。请参阅我的答案以了解他的意思

标签: mysql


【解决方案1】:

您可以通过使用逻辑 AND 和 OR 来实现此目的。

WHERE (field1 > 0 AND field2 < field1) OR (field1 <= 0 AND <else part of the statement>)

&lt;else part of the statement&gt; 是您要检查field1 是否不是&gt; 0 的条件,除非没有这样的子句,在这种情况下删除 OR 及其后面的所有内容。

【讨论】:

  • 噢!我忽略了这个大声笑,无论如何,谢谢这会做到!
【解决方案2】:

如果field1 &gt; 0,您只想检查field2 &lt; field1,所以这样编码:

SELECT * FROM `my_table`
WHERE ((field1 > 0 AND field2 < field1) OR field1 <= 0)
AND field3 = '1';

【讨论】:

    【解决方案3】:

    你应该使用case语句:

    SELECT * FROM `my_table` 
    WHERE 
      field2< CASE WHEN (field1>0) THEN field1 ELSE field2+1 END 
      AND field3='1';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 2021-09-10
      • 2017-12-28
      • 2020-12-05
      相关资源
      最近更新 更多