有条件的SQL在哪里基于Value?

时间:2013-05-30 12:51:48

标签: mysql sql

我正在做一个报告,我无法以编程方式构造SQL。我有两个值输入报告。值可以是以下三个选项之一:

  1. 赎回
  2. 购买
  3. 兑换和购买
  4. 查询需要有一个WHERE子句。如果“兑换”被输入,它必须具有:

    ... WHERE balance < 0
    

    如果输入“购买”,则必须具有:

    ... WHERE balance >= 0
    

    如果两者都被喂入,这种情况可以完全排除,或者可以说:

    ... WHERE balance >= 0 OR balance < 0 --> but this is redundant
    

    有没有办法在SQL中应用这种逻辑?在SQL中是这样的:

    SELECT * FROM account WHERE (if param1 = 'redeem' then 'balance <= 0)  ... etc
    

4 个答案:

答案 0 :(得分:3)

是的。你快到了。

WHERE (param='redeem' and balance <=0) or (param='purchase' and balance>=0) or (param='redeem AND purchase ')

答案 1 :(得分:1)

CASE子句中使用WHERE语句。您可以找到示例here

我在MySQL中尝试了以下代码并且它可以工作:

SET @param = 'purchase';

SELECT * FROM TEST.ACCOUNT
WHERE CASE
    WHEN @param = 'redeem' THEN BALANCE < 0
    WHEN @param = 'purchase' THEN BALANCE >= 0
    ELSE TRUE
END;

答案 2 :(得分:0)

这可以解决这个问题吗?

WHERE 
   (purchase is not null && balance >= 0)
OR
   (redeem is not null && balance < 0)

答案 3 :(得分:0)

CASE WHEN param1 = 'redeem' THEN balance <= 0